BASICの宿題はお前にまかせた

■ このスレッドは過去ログ倉庫に格納されています
1BASIC
垢版 |
2006/01/09(月) 15:35:00
N人分のデータ(氏名、体重、身長、年齢)がDATA文で入力されているプログラムが
ある。これを用いて次のプログラムをBASICで作成しなさい
身長が160CM以上で170cm未満の人の名前を表示する
2009/09/23(水) 12:42:45
お前はプログラミングに向いてない
400デフォルトの名無しさん
垢版 |
2009/09/23(水) 16:38:53
できたらやってあげたいがな…
2009/09/26(土) 18:41:31
>>398
テストの前日になって質問ですかw
とりあえず学校こなくていいよ
2009/09/29(火) 17:37:29
覆面算
ルール1
文字はそれぞれの桁の文字を表す
ルール2
異なる文字は異なる数字を表し、同じ文字は同じ数字を表す
ルール3
左端の数字は0ではない
ルール4
(パズルとしては)答えが一つとなる
下のプログラムはルール2を完全に考慮していない。
個々の文字は互いに異なるという条件があるからである。
この条件を取り入れるにはこのプログラムをどのように
直したらよいか。該当箇所の変更前と変更後を答えよ。
Option Explicit
Sub ex3()
Dim a As Integer, b As Integer, c As Integer, d As Integer
Dim x As Integer, y As Integer, z As Integer
For a = 1 To 9
For b = 0 To 9
For c = 0 To 9
For d = 1 To 9
x = a * 100 + b * 10 + b
y = d * 100 + d * 10 + c
z = a * 1000 + a * 100 + a * 10 + d
If x + y = z Then
MsgBox "a=" & a & ", b = " & b & ", c = " & c & ", d = " & d
End If
Next d
Next c
Next b
Next a
End Sub
2009/10/03(土) 16:39:57
@subを用いて2つの分母の異なった(2/3+5/7など)分数の和を計算するプログラムを作成せよ。
実行結果は約分すること

A
Functionを用いてヘロンの公式を実装せよ。
三辺の長さから3角形の面積を求める
ただし、3編の長さより三角形が成立しない場合は、除外する仕様とせよ

404デフォルトの名無しさん
垢版 |
2009/10/03(土) 17:34:27
age
2009/10/03(土) 17:56:38
subとかFunctionなんてBASICにあったっけ
VBならしね
2009/10/03(土) 18:21:41
>>403
BASICは方言が多いから環境を明示すべきだぜ。Aはこんな感じで(十進数BASIC用)
100 !問題2 ヘロンの公式
110 FUNCTION HERON(A,B,C)
120 LET S=(A+B+C)/2
130 LET S=S*(S-A)*(S-B)*(S-C)
140 IF S<0 THEN !三角形で無いなら-1を返す
150 LET HERON=-1
160 ELSE !三角形なら面積を返す
170 LET HERON=SQR(S)
180 END IF
190 END FUNCTION
200 PRINT "3辺の長さ(例 3,4,5):"
210 INPUT A,B,C
220 LET S=HERON(A,B,C)
230 IF S >=0 THEN
240 PRINT "面積:"; S
250 ELSE
260 PRINT "三角形ではない"
270 END IF
280 END
2009/10/03(土) 20:17:34
面積0なら三角形じゃないだろうという本質ではないとこに突っ込んでみる
408デフォルトの名無しさん
垢版 |
2009/10/03(土) 22:48:57
そうっすね
2009/10/04(日) 00:19:56
本質的なところを突っ込んでください。
>>406だと変な値を入れても除外せずに面積計算しちゃう事があるのよね。
410デフォルトの名無しさん
垢版 |
2009/10/06(火) 11:17:08
. 1. HTML    で検索した結果 1〜10件目 / 約5,040,000,000件
. 2. PHP      で検索した結果 1〜10件目 / 約2,970,000,000件
. 3. Java......   で検索した結果 1〜10件目 / 約 835,000,000件
. 4. Forth.    で検索した結果 1〜10件目 / 約 323,000,000件
. 5. Ruby..    で検索した結果 1〜10件目 / 約 275,000,000件
. 6. perl.....    で検索した結果 1〜10件目 / 約 245,000,000件
. 7. Python...   で検索した結果 1〜10件目 / 約 204,000,000件
. 8. pascal...   で検索した結果 1〜10件目 / 約 170,000,000件
. 9. Delphi    で検索した結果 1〜10件目 / 約 127,000,000件
10. VisualBasic...で検索した結果 1〜10件目 / 約 121,000,000件
11. lisp...      で検索した結果 1〜10件目 / 約.  26,700,000件
12. fortran     で検索した結果 1〜10件目 / 約.  21,300,000件
13. COBOL    で検索した結果 1〜10件目 / 約.  18,500,000件
14. HSP      で検索した結果 1〜10件目 / 約.  12,300,000件
15. FreeBasic.. で検索した結果 1〜10件目 / 約   6,320,000件
16. Tcl/Tk.     で検索した結果 1〜10件目 / 約   4,940,000件
17. QBasic     で検索した結果 1〜10件目 / 約   4,190,000件
18. VisualC....  で検索した結果 1〜10件目 / 約   1,360,000件
19. DarkBASIC. で検索した結果 1〜10件目 / 約   1,320,000件 ← ここ
20. BasicStudio で検索した結果 1〜10件目 / 約    304,000件
21. N88basic.   で検索した結果 1〜10件目 / 約    215,000件
22. f-basic     で検索した結果 1〜10件目 / 約    109,000件
23. ActiveBasic で検索した結果 1〜10件目 / 約.     89,800件
24. 99BASIC.... で検索した結果 1〜10件目 / 約.     11,500件

3Dprogramming で検索した結果 1〜10件目 / 約794,000件
2Dprogramming で検索した結果 1〜10件目 / 約. 57,400件

intel で検索した結果 1〜10件目 / 約729,000,000件
amd で検索した結果 1〜10件目 / 約355,000,000件
2009/10/06(火) 18:37:56
. 4. Forth. Wwwww
2009/10/06(火) 18:47:27
懐かしくてMindのサイト行ってみたけど
4番人気にしては寂しい状態だなw

正確にはForthじゃないけどw
2009/10/06(火) 19:16:10
http://pc.watch.impress.co.jp/img/pcw/docs/319/824/html/328.jpg.html
2009/10/06(火) 19:17:21
http://pc.watch.impress.co.jp/img/pcw/docs/319/824/html/333.jpg.html
415デフォルトの名無しさん
垢版 |
2009/10/07(水) 14:59:15
すみません、プログラム超素人なんですけど、VisualBasicの質問もここでいいのでしょうか…?
VisualBasic2008ExpressEditionで、フィボナッチ数列の剰余の周期性の長さを求めるプログラムを組んだんですが、
一部正常に動作してくれない。詳しい方がいたら、修正点を教えてもらえないでしょうか。

プログラムは以下の通りなんだけど、周期の長さが80以上になるような場合だと正常に動作してくれない…
どうか修正点の指摘よろしくです。。

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(1000), b(1000), c, n, x
a(1) = 1 : a(2) = 1 : n = 2
x = Val(TextBox1.Text)
Do
n = n + 1
Label1.Text = n
a(n) = a(n - 2) + a(n - 1)
Label2.Text = a(n)
b(n) = a(n) Mod x
Label3.Text = b(n)
a(n + 1) = a(n - 1) + a(n)
Label4.Text = a(n + 1)
b(n + 1) = a(n + 1) Mod x
Label5.Text = b(n + 1)
If b(n) * b(n + 1) = 1 Then
c = n - 1
Exit Do
End If
Loop
Label6.Text = c
End Sub
End Class
2009/10/07(水) 16:48:34
ステップ実行しろ
417デフォルトの名無しさん
垢版 |
2009/10/07(水) 17:54:29
>>416
ステップの実行って…?
418デフォルトの名無しさん
垢版 |
2009/10/07(水) 18:42:17
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard41.htm
2009/10/07(水) 18:51:15
BASIC以前の問題だな
2009/10/07(水) 19:59:00
VBってホント、ソースが醜いねぇ〜w
2009/10/07(水) 20:27:51
      ↑
{ } 中カッコが無いとプログラミングできないひと?
2009/10/07(水) 20:39:56
いいえ、行番号が無いとプログラミングできないひとです。
2009/10/07(水) 22:37:16
いいえ、APIがないとプログラミングができないイキモノです(大爆笑)
2009/10/07(水) 23:29:02
(核)
425デフォルトの名無しさん
垢版 |
2009/10/08(木) 09:27:39
お前ら解答出来ないなら喋んなよ
2009/10/08(木) 09:40:37
なんだ回答でてんじゃん
2009/10/09(金) 09:17:19
>>425
そこまでロジック組めるなら、今度はデバックの仕方を学ぶべきだ
つか、>>415な汚いソースなんか誰も追う気にはなれない
2009/10/13(火) 06:00:51
http://pc.watch.impress.co.jp/docs/column/nishikawa/20091013_320336.html
2009/10/13(火) 18:49:14
>>415
> プログラムは以下の通りなんだけど、周期の長さが80以上になるような場合だと正常に動作してくれない…

"期待する正常動作、実際の動作"が不明だが、エスパーしてみると、数列の数値が大きすぎてオーバーフローしてると思われ。
周期80なら連続する2数値は、↓のはず。
8670007398507948658051921, 14028366653498915298923761
2009/10/15(木) 15:43:14
http://pc.watch.impress.co.jp/docs/news/20091015_321777.html
2009/10/16(金) 05:05:08
Yahoo!プログラミング言語検索ランキング(今回2009/10/16、前回2009/10/12)

《一般カテゴリ》
. 1(. 1) HTML.....    約5,030,000,000件(約5,020,000,000件)+
. 2(. 2) PHP...      約2,980,000,000件(約3,000,000,000件)--
. 3(--) BASIC..      約1,580,000,000件(....------------- )0
. 4(. 3) JAVA..      約 822,000,000件(約 832,000,000件)--
. 5(--) CGI.        約 551,000,000件(....------------- )0
. 6(--) C言語(*1).   約 399,000,000件(....------------- )0 (*1)C/C++とC#の検索件数の合計
. 7(. 4) FORTH..    約 323,000,000件(約 324,000,000件)-
. 8(. 6) PERL..     約 245,000,000件(約 245,000,000件)0
. 9(. 7) PYTHON..   約 213,000,000件(約 209,000,000件)++
10(. 8) PASCAL..   約 168,000,000件(約 168,000,000件)0
11(. 9) DELPHI.    約 128,000,000件(約 128,000,000件)0
12(11) LISP      約.  26,000,000件(約.  26,600,000件)--
13(12) FORTRAN.   約.  21,200,000件(約.  21,300,000件)-
14(13) COBOL.....   約.  16,800,000件(約.  17,100,000件)--
15(--) PROLOG    約.  13,800,000件(....------------- )0
16(14) HSP        約.  12,300,000件(約.  12,400,000件)-

《BASIC言語カテゴリ》
. 1(--) VisualBasic...  約 120,000,000件(約 121,000,000件)-
. 2(--) Hu-BASIC..  約.  15,000,000件(....------------- )0
. 3(--) QBASIC..    約   4,140,000件(約   4,160,000件)--
. 4(--) MSX-BASIC.....約   1,430,000件(....------------- )0
. 5(--) DarkBASIC .  約   1,310,000件(約   1,330,000件)--
. 6(--) CBM-BASIC. 約    944,000件(....------------- )0
. 7(--) BasicStudio   約    303,000件(約    302,000件)+
. 8(--) N88BASIC..  約    219,000件(約    218,000件)+
. 9(--) X-BASIC...   約.     40,400件(....------------- )0
10(--) 99BASIC....   約.     11,400件(約.     11,300件)+
2009/10/16(金) 09:24:07
だから何だと?
2009/10/16(金) 10:13:47
少数派では不安と考えるか、多数いると買い叩かれると考えるかで変わってくるんでは?
2009/12/15(火) 16:20:20
50人のクラス(男子35人)から5人の委員をランダムに選ぶ。このとき選ばれた委員の中に男3人、女2人が入る確率をBASICで求めよ。


すいません、さっぱりわからないので教えてください。
2009/12/16(水) 13:43:37
>>431
疑問なんだがなぜ今FORTHなんだ?
2009/12/27(日) 21:43:34
>>434
まず、数学で問題をときます。
次にPC8801を起動してディスクを入れてリセットします。
BASICが起動したらautoと打ってリターン。
あとはBASICでプログラムを入力し
F5を押します
2010/01/04(月) 17:10:24
>>434

Dim n(5)
Randmize(Left$(Time$,2))
For i=0 To 10000
m=0
f=0
For j=1 To 5
n(j) = Int(Rnd()*50)+1
If n(j) > 36 Then f=f+1 Else m=m+1
Next j

If m=3 And f=2 Then c=c+1
Print c*100/i
Next
438デフォルトの名無しさん
垢版 |
2010/01/05(火) 09:38:21
普通に公式使って解けばいいじゃん
439デフォルトの名無しさん
垢版 |
2010/06/02(水) 00:30:00
>>437
それじゃ同じ人間が複数回選ばれかねないんじゃないか?
440デフォルトの名無しさん
垢版 |
2010/06/06(日) 15:38:07
BASIC/98についてお願いします。
以下の課題が明日提出で困っています。
以下のプログラムを円グラフで作れという問題です。
100 '棒グラフ
110 SCREEN 3 : CONSOLE 0,25,0,1 : CLS 3
120 DIM TBL(12),XB(12)
130 FOR J=1 TO 12 : READ TBL(J) : NEXT J
140 DATA 3,6,10,13,16,20,15,11,8,7,4,2
150 GOSUB *BOU : ' 棒グラフ
160 END
170 *BOU
180 N=12 : 'データ数
190 K=5 : '等分数
200 DM=20 : 'データの最大値
210 BX=90 : BY=320 : '原点座標 (0点の位置)
220 XL=420 : YL=300 : '横軸 (X) , 横軸 (Y) の最大の長さ
230 XH=XL/N : 'X軸の目盛り幅
240 YH=YL/DM : 'Y軸の目盛り幅
250 YK=YH : 'Y軸の1目盛り当たりの縮尺係数
441デフォルトの名無しさん
垢版 |
2010/06/06(日) 15:39:35
続き

260 XA=XH/4 : '棒グラフの幅
270 ' *** 横線 ***
280 FOR J=0 TO DM STEP K
290 LINE(BX,BY-YH*J)-(BX+XL+XH,BY-YH*J)
300 NEXT J
310 ' *** 縦線 ***
320 FOR J=0 TO N+1
330 IF (J=0 OR J=N+1) THEN LINE(BX+XH*J,BY)-(BX+XH*J,BY-YL):GOTO 360
340 XB(J)=BX+XH*J
350 NEXT J
360 ' *** 横軸 ***
370 LOCATE 15,21:PRINT "0 1- 10- 20- 30- 40- 50- 60- 70- 80- 90- "
380 LOCATE 16,22:PRINT " 9 19 29 39 49 59 69 79 89 99 100 "
390 LOCATE 30,23 : PRINT "点 数"
400 ' *** 縦軸 ***
410 LOCATE 5,20 : PRINT " 0"
420 LOCATE 5,15 : PRINT "数 5"
430 LOCATE 5,10 : PRINT " 10"
440 LOCATE 5, 5 : PRINT "人 15"
450 LOCATE 5, 1 : PRINT " 20"
460 ' *** 棒グラフを引く ***
470 FOR J=1 TO N
480 X1=XB(J)-XA
490 X2=XB(J)+XA
500 Y1=BY-TBL(J)*YL
510 LINE(X1,Y1)-(X2,BY-1),4,BF
520 NEXT J
530 RETURN
442デフォルトの名無しさん
垢版 |
2010/06/06(日) 17:57:00
輝け甲子園の星(2010早春号)より
選抜高校野球選手権大会出場選手「好きなタレント」アンケート

1位 北川景子 49票
2位 上戸 彩 24票
3位 香里奈  23票
4位 佐々木希 22票
5位 松本人志 18票
6位 新垣結衣 17票
7位 南 明奈 黒木メイサ 15票
9位 木下優樹奈 12票
10位 市川由衣 11票
11位 EXILE 10票
12位 ダウンタウン 相武紗季 9票
14位 宮崎あおい 8票
15位 柴咲コウ 戸田恵梨香 井上真央 コトリッチ 7票
2010/06/08(火) 21:59:23
「BASICの宿題」 って、普通科の高校ではないよね。
みんな、職業科の高校生? それとも専門学校生か何かなの?
  
2010/06/09(水) 14:38:12
BASICは長い間10進BASICしか使った事がないなあ
2010/06/09(水) 20:03:53
>>440
たしかにN88とかだと扇形が描きやすいのかもしれない
446デフォルトの名無しさん
垢版 |
2010/06/12(土) 01:34:44
宿題、ではないんですが

一次不定方程式、例えば12x+18y=6のxとyを求めるプログラムをユークリッドの互除法を使って
作成してください。
よろしくお願いします。
2010/06/18(金) 19:43:13
>>446
ユークリッドの互除法については理解出来ているの??
  
2010/06/22(火) 10:47:07
10進BASICで高次方程式の解を二分法で求めるプログラム作成をお願いします。
2010/06/28(月) 19:48:15
フリーソフトの「N88互換BASIC」 ってWindows でも使えるからすごく便利だと思うけど、
使っている人はどのぐらいいるの? 
 
2010/07/01(木) 11:34:57
>>449
使ってる人の数が知りたい理由を50時で述べよ
2010/07/01(木) 19:59:07
>>450
50時では無理。50字なら可能。

メジャーなプログラム言語であれば、配布や意見交換で好都合なので、
マスターする価値が大きいから。 (以上、句読点を含めて47字。)
   
2010/07/11(日) 03:46:42
N88互換BASICは昔のプログラムのための再生プレーヤーなんじゃないの。
これで新規にプログラムをかくとは思えん。
2010/07/11(日) 16:48:42
エミュでいいじゃん
2010/07/12(月) 18:24:27
>>452
>N88互換BASICは昔のプログラムのための再生プレーヤーなんじゃないの。

違うよ。 完全互換じゃないから、再生プレーヤーにはならないよ。
数学の高度な計算をするときや、複雑なグラフの概形を知りたい時などの最高のツールだよ!
  
2010/07/12(月) 18:38:22
10進BASICでいいじゃん
俺はグラフ描かせたい時はあれかDelphiばかり使ってる
2010/07/12(月) 20:34:38
>>454
うーん。本当にN88互換BASICで新規にプログラムかいているんですか?
すごく遅いという記憶しかないのですが。
2010/07/15(木) 07:34:59
エクセルかgnuplotで十分だろ
2010/07/25(日) 17:30:38
>>459
使用言語:J

f=:dyad define
c=.'*'
c,.(c,(((x, y)-2)$'_'),c),.c
)

4 f 7
*******
*_____*
*_____*
*******
2010/07/25(日) 17:31:58
>>458
間違えました。ごめなさい。
2010/08/13(金) 20:07:41
初書き込みの新参者です。どうぞよろしくお願いします。

P(x,y,z),RGB(x,y,z):x,y,z=0-255からなる立方体を描画するプログラムを作成しております。
(要するに色立体です)

@x,y,z軸で自由に回転させる機能をつけたい
A陰線消去して、Z値が仮想の点は描画しないようにしたい
BZ値を指定して、特定断層のみを描画したい
C描画速度を向上させる方法(構文的に)を知りたい

自分で作ったやつは、いろいろとイマイチ(特に描画速度)で困っています・・・。
461デフォルトの名無しさん
垢版 |
2010/08/13(金) 20:34:58
Xc=width/2 '表示母体のX中心
Yc=hight/2 '表示母体のY中心
Zmin=0 'Zmin以下の層を描画しない(処理減少目的)
Zmax=255 'Zmax以上の層を描画しない(断層表示目的)

For x=0 to 255
 For y=0 to 255
  For z=0 to 255
   Z=z
   IF Z>=Zmin Z<=Zmax then
    X=10*(x-128)+Xc
    Y=10*(y-128)+Yc
    PSET(X,Y),RGB(x,y,z)
   Endif
  Next z
 Next y
Next x

Z値の範囲を指定して処理軽減を狙っていますが、それでもかなり描画が遅いです。
X,Y,Zを操作することで、立方体の回転もできると思っています。
効果的な方法が知りたいです。
2010/08/13(金) 23:59:05
オイラー座標ではなくて四元数使った方がいいんじゃないの?

四元数は複素数の拡張として知られ、複素数はガウス平面上の
二次元物体の挙動を表すのに用いられたが、四元数のそれは三次元の
物体の回転に対応しており、例えば乗法の交換法則が成り立たないが、
これは三次元の物体を経度方向に動かしてから緯度方向に動かしたのと、
経度方向に動かしてから経度方向に動かした結果が異なる事に対応している
2010/08/14(土) 00:01:13
http://www015.upp.so-net.ne.jp/notgeld/quaternion.html

ここら辺が参考になるのでわ
他にもクオータニオンで検索すれば多数ヒットする
2010/08/14(土) 00:02:11
×経度方向に動かしてから経度方向に動かした結果が
○緯度方向に動かしてから経度方向に動かした結果が
2010/08/14(土) 11:42:06
今のところ、回転はx,y,z軸回り回転行列で処理させています。(これをオイラー角というのでしょうか?)
クォータニオン(四元数)は、複素数での平面回転を、立体回転に拡張したようなものでしょうか?
勉強してみたいと思います。

ただ、同じ(X,Y)座標の時に、Z値がより表層の場合に描画し、Z値がより下層場合には描画しないという、
陰線処理のルーチンが上手くいきません。
いい処理方法はないでしょうか?
2010/08/14(土) 11:44:16
処理が煩雑で、処理速度が遅いのが悩みの種です。
配列とか、オブジェクト指向にして上手くまとめる方法はないでしょうか?
467デフォルトの名無しさん
垢版 |
2010/08/14(土) 20:46:00
すいません初歩的な質問なんですがVisual Basic2008で
給料明細を確認するプログラムを作りたいと思っていまして、いきなり躓いているので誰か助けてください^^;
時間などを入力するTextBoxをつくり、総給料を出すときに時給×時間で表示させたいんですが、

総給料のTextboxにはどうやってコードを書けばよいのでしょうか、色々やってみたのですが何も反応しなくて・・・
超初心者質問ですいませんがよろしくおねがいします。

468デフォルトの名無しさん
垢版 |
2010/08/14(土) 21:27:45
すいません↑のものです。
質問を変えます。

TextChagedイベントでやっていたのですが、反応せずClickイベントではちゃんと値がでました。
でも毎回クリックしていては面倒くさいプログラミングソフトになってしまうので
どういったイベントで行えば、時給と時間を入力したあとすぐに総給料を計算して総給料のtextに入力しますか?
ちなみに総給料のコードは

TextBox93.Text = Double.Parse(TextBox4.Text) * Double.Parse(TextBox3.Text)
です。
2010/08/17(火) 18:41:16
>>466
亀レスすまんが・・・

なぜ、色立体をボリュームレンダリング(全ボクセルを描画)する?

立方体は最外面しか表示されないんだから、
サーフェースレンダリング(内部は無視して、6面だけ処理)すればいいじゃない。
そうすれば、重なる点は2面だけだから2点の前後判定で陰線処理できるぞ。

最外面をどこにするか深度も変更できるようにすればどう?
2010/08/17(火) 18:52:08
あ、でもこの方法だと、任意の角度での断面をとるのは厳しいな〜

処理速度はX 255×Y 255×Z 255のネストよりは圧倒的に早くなるんだがね。
なにしろ、(A 255×B 255)×6面で済むからね。

255→128へ間引いて、PSET→CIRCLEやLINE/BFしてやるだけでもだいぶ早くなると思うけど。
471460
垢版 |
2010/08/18(水) 11:52:01
>>469


処理がとても速くなりました。
陰線処理も、平行する二面の前後判定だけですむので非常に簡潔になりました。
確かに内部は表示されないので、外周だけ処理すれば良かったんですね!!

回転もロール・ピッチ・ヨー方式での連続回転と、各軸周りの単回回転を実装しました。

あとは任意断面を切り取る機能が欲しいのですが、外周だけの処理だと切り口の辺しか描画されず、面になりません。
任意平面で立体の断層面を描画する方法を教えて下さい。
2010/08/18(水) 20:29:57
X 255×Y 255×Z 255のネストで内部も含めた全座標(X,Y,Z)をバッファ
 ↓
各座標点を指定角度だけ回転させて変更後の座標(X',Y',Z')にリフレッシュ
 ↓
回転後の任意Z'座標のみ抜き出して、平面(X',Y')を描画

やればできそうですが、物凄い処理になって遅そうな印象が・・・
473デフォルトの名無しさん
垢版 |
2010/08/18(水) 21:05:00
逆の考えで、点集合P(x,y,z)に対して、z=Z0の平面である点集合Pz0(x,y,Z0)を考える。

その平面を任意の角度(α,β,γ)に回転させて、色立体との交差判定を行う方法はどうか??

立方体と平面の交差判定をどうするか・・・
474デフォルトの名無しさん
垢版 |
2010/08/18(水) 21:10:43
もしかして、回転後の平面の点集合Pz0'(x',y',z')の各座標を、色関数RGB(r,g,b)に代入すれば・・・いける??

Pz0'(x',y',z'),RGB(x',y',z')  ただし、0<=x',y',z'<=255の範囲にクリップしてから
475デフォルトの名無しさん
垢版 |
2010/08/19(木) 20:06:23
>>468
フォーカスアウトイベントがあるはず
共通処理を行う関数を作り、時間と給料のテキストボックスからフォーカスが離れたら呼び出す。
イベントが来たボックスと別のボックスに表示させかたはわかる?
476460
垢版 |
2010/08/20(金) 19:20:48
断層面を指定してから回転させる方法も試させてもらいました。

Z軸回りに45度回転させると断面が八角形になるのでおかしいと思ったら、
斜めだと√2倍になるせいで、断面が元の立体と同じ大きさの面だと足りなくなるようです。

X,Yのネストを0〜255でなく、0〜255×√2倍にしてみました。
Z軸回りの回転では角が切れなくなりましたが、立方体の対角断面を取ろうとするとまだ足りない気もする・・・。

今のところは、立方体の回転後の全座標を計算後に、Z値指定で描画が一番遅いですが、一番確実のようです。
477460
垢版 |
2010/08/20(金) 19:24:10
回転についてですが、現在の座標をもとに回転させていくと、
誤差の蓄積のためか、どんどん図形が小さくなって、数回転させると1つの点に収束してつぶれてしまいます。

現在は、角度だけを累積して、常に初回の座標を元に計算させ直すことで対応させています。

回転後の座標を利用して次の回転後の座標を計算する場合に、潰れない方法はありますか?
回転時に大きさを正規化する必要がありそうなのですが・・・
2010/08/22(日) 15:46:47
色立体をRGB式の直方体で作成していますが、球や円柱、円錐、六角形のモデルも作成できるでしょうか?

RGB式ではなく、やはりHSL(HSB)式でないと難しいでしょうか?
2010/08/23(月) 00:20:34
回転前に絶対値をとって、原点からの距離を計算しておく

回転後にも絶対値をとって、回転前の絶対値で割ってから、それを回転後の座標にかける
480デフォルトの名無しさん
垢版 |
2010/08/23(月) 09:56:28
RGB方式 → HSL/HSB(HSV)方式への変換
0<= R,G,B =<1

H:色相(0<= H =<360,H=H+360×n) 主波長
360度モデル)
 H=60*(G-B)/(MAX(R,G,B)-MIN(R,GB))+0 if MAX(R,G,B)=R
 H=60*(B-R)/(MAX(R,G,B)-MIN(R,GB))+120 if MAX(R,G,B)=G
 H=60*(R-G)/(MAX(R,G,B)-MIN(R,GB))+240 if MAX(R,G,B)=B
  H=0 赤  H=120 緑  H=240 黄

S:彩度(0<= S <=1) 主波長の頻度分布
円柱モデル)
 S=(MAX(R,G,B)-MIN(R,G,B))/MAX(R,G,B)
  S=0 無彩色  0< S =< 1 有彩色  S=1 純色
円錐モデル)
 S=MAX(R,G,B)-MIN(R,G,B)
  S=0 無彩色   0< S =< 1 有彩色   S=1 純色

V:明度・強度(0<= V =<1) 総スペクトルパワー・最大振幅
逆円錐)
 V=max(R,G,B)
 V=1 純色  0< V <1 通常色  V=0 黒

L:明度・輝度(0<= L =<1) 色覚総刺激値
双円錐)
 L=average(R,G,B)=(R+G+B)/3=(rR+gG+bB)/3
 L=1 白  L=2/3 CMY原色  L=1/2 純色  0< L <1 通常色  L=1/3 RGB原色  L=0 黒
481480
垢版 |
2010/08/23(月) 10:09:29
>>478
アルゴリズムからBASICで組むのであれば、>>480の方法で
HLS方式でよければ、API関数:ColorRGBToHLS()やColorHLSToRGB()を利用する方法もある
あと、英語のWikipedia(http://en.wikipedia.org/wiki/HSL_and_HSV)であなたのやりたいことがすでに行われているかも・・・

>>480で訂正箇所
誤)H=240 黄
正)H=240 青
2010/08/24(火) 22:38:06
English版のwikipediaの解説すごい!!

RBGモデルの格子を変形してHSL/HSBモデルにする過程が、図式化・計算式化されていて驚いた

RGB立方体→双六角錐→双円錐→円柱(HSL)
RGB立方体→単六角錐→単円錐→円柱(HSB)

これをアニメーションするようなプログラムアルゴリズムが欲しいね
2010/08/24(火) 22:47:49
メモのエラーについて、
出現の予測が不能・けっこう頻度が無視できない・修復不能の三拍子がそろっており、
我が身に降りかかると愕然としてしまいます。

メモのエラー対策に対する暫定案として、
救済可能なように今後は別ファイル(txtデータやcsv)で保存する形式にしたらどうでしょう?

@SBでスクリプトにメモを記載
Aカレントフォルダに別ファイルを作成し、どのスクリプトのどのパネル位置に何と書かれているかを、保存時に自動書き出し
BSBでメモを見る際はそのファイルにアクセスする
C仮にソフト側でエラーが出て落ちても、ファイル自体は生き残るので、テキストエディタで中身を確認可能
Dそのファイルを再インポートすると、修復・復帰したソフトで読み込める
2010/08/25(水) 21:32:13
>>483
誤爆!!
2010/08/26(木) 14:42:57
そのモーフィングアニメをソフトで再現してみてくれ〜

RGB   HLS                             HSB    RGB
立方体→双六角錐→六角柱→円柱→球→円柱→六角柱→単六角錐→立方体
立方体→双六角錐→双円錐→円柱→球→円柱→単円錐→単六角錐→立方体
2010/08/27(金) 00:51:33
立方体はx,y,zをPSETで順次代入していくだけで簡単に描画できるけど、
球とか、円柱とか、円錐とかはどうやって描画するの??
2010/08/29(日) 09:15:45
むしろ

HLS                        RGB                           HSV(HSB)
球→双円錐→円柱→六角柱→双六角錐→立方体→単六角錐→六角柱→円柱→単円錐→半球

球は明度を表面に沿わせるか、高さに沿わせるかで2通りできそう
2010/08/29(日) 18:42:24
>>486
媒介変数θを0度→360度で変化させ、X=r*cosθ,Y=r*sinθで描画
一定半径r(彩度S=255)で明度Zを0→255へ変化させると、円柱

上記で、
明度Zを0→255へ変化させる間に、半径rも線形的に増加させると、単円錐

上記で、
明度Zを0→128まで線形的に半径を増加させ、128→255で線形的に半径を減少させると、双円錐

上記で、
明度Zを0→255へ変化させる間に、半径r=sqr(128^2-z^2)で変化させると、球(高さ明度)

上記で、
明度Z=128を中心として、媒介変数φを0度→180度へ変化させ、Z=128*cosφ,r=128*sinφで変化させると、球(表面明度)
2010/08/29(日) 18:53:41
媒介変数θを0度→60度,60→120度,120度→180度,180度→210度,210度→240度,240度→300度,300度→360度で場合分けして、
Y=−√3*X+√3,Y=+√3,Y=+√3*X+√3,Y=−√3*X−√3,Y=−√3,Y=−√3*X+√3,で描画
彩度S=255の固定で、明度Zを0→255へ変化させると、六角柱

上記で、
彩度S=255の固定で、明度Zを0→255へ変化させながら、切片絶対値を線形減少させると、六角錐
2010/08/29(日) 19:26:29
HSLやHSB(V)では明度軸があり、色相環がそれを囲んでいるので、
外表面は彩度255に固定して、色相環を任意に回転させるようにアニメーションさせれば良い

明度軸を0度から90度(または-90度から+90度)だけ手前に傾けるアニメーション、
彩度を任意値にスライドさせるアニメーション、明度軸に沿った平面で断層をとるアニメーションもあると良いかな
2010/08/31(火) 12:55:46
立方体の対角線を軸にして、垂直断面をとった場合の断層と、水平断面を軸の高さに応じて何枚かとった断層をみたい
2010/09/02(木) 00:53:40
夏休み終わったから、ヴィジュアル系ベーシックが使える様になって女子にモテモテと企んで、マヌアル読んでみたが、ベーシックって帳票印刷の機能がない?
やっぱりジャヴァを使えないと帳票印刷は無理?
おまいら帳票印刷どうしてるの? 諦め?

あと、ベーショック使えて女子に持てた事有る?
2010/09/02(木) 14:19:13
>>492
>帳票印刷
やろうと思ったことさえないので、わからん
標準ではできないかもしれんが、APIとかDLLでできるくなるんでは?

>ベーショック使えて女子に持てた事有る?
ま、使えようが使えまいが、モテはしないが・・・
SEがBASIC使えても、あまり興味持たれないだろうが

学生や普通職なら、簡単な処理をするソフト作ったりして重宝がられたり、話すきっかけ作りになることはあるな
2010/09/02(木) 17:12:43
>>492
帳票は、Excel組込みのBASICを使う。VBと同じだ。
Excel使いの間では、関数が使えれば先生、VBAが使えれば神様と呼ばれる。
2010/09/02(木) 17:29:10
Excel系BASICの住民もいたんだな

CG系住民だけかと思ってた
496デフォルトの名無しさん
垢版 |
2010/09/09(木) 22:07:48
BASICで立体座標を扱うと処理遅いんだけど、BASICでDirectXとか使って処理を高速化する方法ないの?
2010/09/10(金) 01:04:12
>>496 DarkBASIC
2010/09/10(金) 13:00:15
directxのためにc覚えたほうが前向き。

http://hibari.2ch.net/test/read.cgi/tech/1278214135/
【C++】 DirectX初心者質問スレ Part30 【C】
http://hibari.2ch.net/test/read.cgi/tech/1178285897/
【PureVideo】DirectX Video Acceleration【AVIVO】
http://hibari.2ch.net/test/read.cgi/tech/1061285378/
Managed DirectX vol.2
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況