1 名前:デフォルトの名無しさん [04/07/03 08:49] VB.NETの質問全般です 過去スレ VB.NET質問スレ (Part5) pc5.2ch.net/test/read.cgi/tech/1078134703/ VB.NET質問スレ (Part4) pc2.2ch.net/test/read.cgi/tech/1065269043/ 【老若】VB.net質問スレ【男女】 (Part3) pc2.2ch.net/test/read.cgi/tech/1056281084/ 【老若】VB.net質問スレ【男女】 (Part2) pc2.2ch.net/tech/kako/1043/10436/1043629429.html 【老若】VB.net質問スレ【男女】 pc2.2ch.net/tech/kako/1025/10258/1025848458.html
272 名前:デフォルトの名無しさん mailto:sage [04/07/27 00:58] >>271 配列をそのままTextBox.Linesプロパティに入れて、編集後にTextBox.Linesをそのまま配列に戻すのは駄目なん? 的外れだったらスマソ。
273 名前:デフォルトの名無しさん mailto:sage [04/07/27 01:22] >>272 おおっ. そんなものがあったのか. ご教授ありがとうございました. テキストデータの行数がいろいろ変わるので, やっぱり For文 で回したほうがいいみたいでした. とにかく解決.ありがとうございました.
274 名前:デフォルトの名無しさん mailto:sage [04/07/27 13:35] >>272 さんのおかげで少し進んだのですが,,, 今度は,TextBoxのカーソル位置を表示してみようと思いまして,,で, Cur = TextBox1.SelectionStart If Cur <= 0 Then y = 1 : x = 1 Else c = 0 : y = 0 Do x = Cur - c c += TextBox1.Lines(y).Length + 2 If Cur < c Then Exit Do y += 1 Loop For xx = x - 1 To 0 Step -1 If AscW(TextBox1.Lines(y).Substring(xx, 1)) >= 256 Then x += 1 Next y += 1 : x += 1 End If Label1.Text = y & "行 " & x & "桁" こんなんになってしまったのですが,これだと 各行の文字数を先頭から 足して来たり,各文字が全角かどうか一文字ずつ調べたりしてて, TextBox の文字数が多くなると遅そうですよね. 他にスマートな方法があれば教えていただきたいのです.
275 名前:デフォルトの名無しさん [04/07/27 13:45] picture clip controlは.NETには入ってないのでしょうか?
276 名前:216 [04/07/27 16:42] >>217 ヒントありがとうございます キーフック自体わからず調べながらやってみたのですがなかなかうまくいきません。 SetWindowsHookExtというAPIでキーボードのメッセージを捕捉できるところまで行ったのですが 次に自分でPostMessageで別のキー入力を起こそうと思っているのですがここがダメです。 今フォームにテキストボックスが1コはっつけてやってみています Function KeyBoardProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer If nCode < 0 Or nCode = 3 Then Return CallNextHookEx(m_hHook, nCode, wParam, lParam) End If Dim ret As Integer Dim iMsg As Integer If wParam = CInt(Keys.A) Then If lParam And &H80000000 Then iMsg = WM_KEYUP Else iMsg = WM_KEYDOWN End If wParam = Keys.E PostMessage(TextBox1.Handle.ToInt32, iMsg, wParam, lParam) CallNextHookEx(m_hHook, nCode, wParam, lParam) Return 1 End If End Function TextBox1のIMEモードはひらがなにしてあります。 aのキーを打つとeがテキストに入るのですがほんとは「え」と入ってIMEで変換できる状態(えの下に点線の下線)になって欲しいのです。 的外れと思いつつImmGetContextの返値をPostMessageの第一引数にしてみましたがさっぱりでした。 何がいけないのか教えてください。
277 名前:216 mailto:sage [04/07/27 16:44] >>276 ヒントを頂いたのは >>217 ではなく >>218 でした というか217は自分でした・・・
278 名前:デフォルトの名無しさん mailto:sage [04/07/27 16:54] >>274 Win32API使ってもOKなら、user32.dllのGetCaretPosでいける。 do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10 ここの>>32 にC#版がある。
279 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:32] do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=32&fi=no
280 名前:デフォルトの名無しさん mailto:sage [04/07/27 21:28] >>278 >>279 C# がわからないのでいろいろ苦労しました. いや,C# の問題じゃなくて,Win32API ってやつの方かな. ヘルプとかいろいろ調べてやっとできました. Win32API ってのは初めての経験なもので... Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer ってのを作っといて, y = SendMessage(TextBox1.Handle, &HC9, -1, 0) x = TextBox1.SelectionStart - SendMessage(TextBox1.Handle, &HBB, y, 0) For xx = x - 1 To 0 Step -1 If AscW(TextBox1.Lines(y).Substring(xx, 1)) >= 256 Then x += 1 Next y += 1 : x += 1 Label1.Text = y & "行 " & x & "桁" って感じでできたみたい. 全角文字のカウントは残りましたが,だいぶ速くなりました. どうもありがとうございました.
281 名前:デフォルトの名無しさん [04/07/27 23:34] ちと教えてください。 CrystalReport に Textオブジェクト を作って、そこにモジュールレベル変数 (String型)の内容を埋め込むには、どうしたら良いでしょう? Accessのレポートなら作ったことあるんですが、 CrystalReport はちょっと勝手が違うん困ってます。 お願いします。
282 名前:デフォルトの名無しさん mailto:sage [04/07/27 23:51] >>281 データソースはDB? それとも実行時に任意に与える数値?
283 名前:281 [04/07/28 00:16] >>282 レポートそのものは、AccessDBからフィールドを引っ張ってますが、 表題の部分に、任意の文字列を入れたいのです。 別フォームでその文字列を変数に格納して、レポートに表示したい という訳です。
284 名前:デフォルトの名無しさん mailto:sage [04/07/28 00:42] 標準入力・出力するコマンドラインで動くアプリケーションがあるんだけど、 それとVB.NETでやりとりすることできるかな? (ひらたく言えばVB.NETってパイプ使える?)
285 名前:デフォルトの名無しさん [04/07/28 00:49] 標準入出力とのやりとりならできる。
286 名前:デフォルトの名無しさん mailto:sage [04/07/28 01:10] >>285 そうですか。できれば方法も教えてもらえると助かるのですが。 「〜〜というクラスを使え」とか・・・
287 名前:デフォルトの名無しさん mailto:sage [04/07/28 01:11] ヘルプで検索すれば出ると思うが… ProcessクラスとかProcessStartInfoとか参照。
288 名前:デフォルトの名無しさん mailto:sage [04/07/28 01:13] >>287 ありがとうございます。 そこまで教えてもらえればあとはググるなりMSDN使うなりしてなんとかしてきます。
289 名前:デフォルトの名無しさん mailto:sage [04/07/28 01:59] >>287 解決しました。ありがとうございます
290 名前:デフォルトの名無しさん mailto:sage [04/07/28 02:30] >>281 スマン 遅くなりマスタ 表題って言うことは1枚目のレポートヘッダと解釈していいのかね? 仮にSection1にText1というテキストボックスがあったとして Dim cr As New CrystalReport1 Dim t As CrystalDecisions.CrystalReports.Engine.TextObject t = CType(cr.Section1.ReportObjects.Item("Text1"), CrystalDecisions.CrystalReports.Engine.TextObject) t.Text = "123" cr.ExportToDisk(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat, "c:\123.pdf") '結果を出力 パラメータフィールドを使う方法とか色々やり方はあると思うので 自分はまるまるXMLから取得する方法でやってます
291 名前:デフォルトの名無しさん mailto:sage [04/07/28 13:44] FlexGrid.Netを使ってるのですが ある日を境に デザイン時は最新バージョン 実行時は古いバージョン をロードしてしまいます VSの再インストールやFlexGridの最インスコなどいろいろやってみたんですが・・・ binフォルダ内と標準インストール先のフォルダには最新バージョンの 2.1.20032.135 が 実行時にはなぜか一つ前の 2.1.20032.124 が読み込まれています
292 名前:デフォルトの名無しさん mailto:sage [04/07/28 14:21] Windowsアプリケーションから、 任意のsqlスクリプト(ファイル名.sql)を読み込んで 実行させることって出来ますか?
293 名前:291 mailto:sage [04/07/28 16:05] C:\WINNT\ASSEMBLY の情報を書き換えたらうまくいきました
294 名前:デフォルトの名無しさん [04/07/29 17:20] VB.NETで他フォームを参照するにはどうすればよいのでしょうか? 例えば、form1とform2があったとき、 form1からform2のコントロールを直接取得したいのです。 BorlandC++のときは、実行中のフォームのインスタンスを参照できた のですが、VB.NETではそれが見あたりません・・・ よいアイディアがありましたら教えて頂けると 大変助かります。よろしくお願いいたします。
295 名前:デフォルトの名無しさん [04/07/29 17:47] >>294 Form1の中に、 Form2 form2 = new Form2(); form2.hoge = "Hage"; って感じでどうですか?
296 名前:デフォルトの名無しさん mailto:sage [04/07/29 17:49] 上のほうでVB.NETでブラウザ作ってた人はどうなったんだろう? なにげに気になってたんだがw
297 名前:デフォルトの名無しさん [04/07/29 18:22] どこかにVB.NET(2003)を使って、シリアルポートからデータを受信して表示するプログラムの ソースが公開されていませんでしょうか? CreateFile とか ReadFile とかのAPIを使うっていうのはわかっているのですが、 公開されているのを見ると Public Declare Function WriteFile Lib "kernel32" Alias "WriteFile" _ (ByVal hFile As Integer, lpBuffer As Any, _ とか書いてあって(As AnyはVB.NETでは使えない) そのままだと使えないんです。 VB6のMSCommを使えばいいのかもしれませんが、APIを使いたいのです。
298 名前:デフォルトの名無しさん mailto:sage [04/07/29 18:27] >>297 なぜVBにこだわる?
299 名前:デフォルトの名無しさん [04/07/29 18:31] >>298 つっか、APIたたくならC#でもVBでもC++でも答えは似たようなもんでしょ。 あと、VBが一番安いんだっけか?
300 名前:デフォルトの名無しさん [04/07/29 18:43] >>297 その程度のことでいちいち人に聞いてるレベルじゃ、 まず間違いなくファイルI/O系のAPI使いこなすなんて無理だと思う。 ほかのスレでこんなの見つけたけど、これなんか使えるのでは? www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=b06e30f9-1301-4cc6-ac14-dfe325097c69 >>294 久々に「別フォームの……」キター
301 名前:デフォルトの名無しさん mailto:sage [04/07/29 18:45] As Any って As Object で代用できなかったっけ?
302 名前:デフォルトの名無しさん mailto:sage [04/07/29 19:54] どこかにVB.netのゲームサンプルがある場所ってありますでしょうか?
303 名前:294 mailto:sage [04/07/30 00:48] >>295 ありがとうございます。 でもそれだと実行中のフォームじゃなくなってしまうので ダメなんですよね・・・
304 名前:デフォルトの名無しさん mailto:sage [04/07/30 01:34] >>303 インスタンスの扱いが理解できてるなら、Form2のインスタンス作成時に 参照をとっておけばどうにでもなることくらい分かりそうなもんだが…
305 名前:デフォルトの名無しさん mailto:sage [04/07/30 02:07] Form2ってどの段階で表示(生成)されるの? もしかして別EXE?
306 名前:デフォルトの名無しさん mailto:sage [04/07/31 00:04] >>302 難しいなぁ。どんなゲームがいいんだ?
307 名前:デフォルトの名無しさん mailto:sage [04/07/31 03:51] フォームロードイヴェントのときにそのアプリのプロセスIDを取得するのはどうやるのでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [04/07/31 04:59] Velocityのようなテンプレートエンジンってないの? フリーの。
309 名前:デフォルトの名無しさん mailto:sage [04/07/31 08:47] >>307 フォームロードのときというのに深い意味があるのか? ただ単にプロセスIDのとり方が分からんだけとか?
310 名前:デフォルトの名無しさん [04/07/31 13:27] Math.Cos(90 / 180 * 3.1415) を実行すると 4.63267948799578E-05 という数値になります。 0または0に近い数値にしたいのですが、どうすればいいのでしょうか? 90の部分は0〜360度の中で変動、0度=1、90度=0、180度=-1、270度=0という結果を出したいのですが・・。 同様にMath.Sinでも変な数値にorz
311 名前:デフォルトの名無しさん mailto:sage [04/07/31 13:46] >>310 小数点以下3桁くらいで四捨五入しろ
312 名前:デフォルトの名無しさん mailto:sage [04/07/31 13:48] >>310 π = 3.1415 としているのが原因
313 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:05] >>311-312 返答ありがとうございます。 311の通りにしたら数値が0になったので、桁数が多すぎると表示がおかしくなる・・・でいいのかな。
314 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:14] >>313 違う違う、有効数字の考え方を勉強して来なさい。
315 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:15] いや、むしろ10万桁ぐらいまで
316 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:20] もしかして 4.63267948799578E-05 の意味分かってないとか?
317 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:25] >>316 いや、それを変数に入れて計算したら、 4.63267948799578が数値として考えられたのか、ただの回転がとんでもないことにナターヨorz
318 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:25] つまり π = 3.1415 のときに 0.0000463267948799578 ってことだから、 π = 3.141592653589793 くらいまで取ればもっと0に近づく
319 名前:デフォルトの名無しさん mailto:sage [04/07/31 14:28] いや、浮動小数点数だから「変な数値」になることにはかわりないか?
320 名前:デフォルトの名無しさん mailto:sage [04/07/31 15:19] Perlユーザーには基本を知らない人間が多いのは知ってるし 自分も最初はそうだったから人の事は言えないが、 実際にそういう場面に出くわすと疲れるな。 今、基本情報処理の試験受付してるぞ。 基礎を身につける意味で、受験&勉強してみたらどうだ?
321 名前:デフォルトの名無しさん mailto:sage [04/07/31 15:29] すまん、スレ誤爆した。orz
322 名前:デフォルトの名無しさん mailto:sage [04/07/31 19:35] >>308 ない
323 名前:4.63267948799578E-05 [04/07/31 22:05] スマソ、やっぱ根本的なプログラムミスですたorz とりあえず立体モデルの回転をさせようと思っています。 member.nifty.ne.jp/Mukai/3d.htm ここの3番までをしようと思っているんですが、2番目の『初期状態】は Dim A()() as Double = {{1.0 .0.0, 0.0},{0.0, 1.0, 0.0},{0.0, 0.0, 1.0}} でいいのでしょうか? そのあとの『M = A×M』はVB.netで表すとどうなるのか、そもそも『M』の値が分かりません・・・。 分かる方がいれば教えてください。 (ちなみにゆとり教育云々で数学の教科書には回転行列のことなんてませぬorz)
324 名前:デフォルトの名無しさん mailto:sage [04/07/31 22:41] それはプログラミングって言うより線型代数の問題じゃないのか
325 名前:デフォルトの名無しさん mailto:sage [04/07/31 23:16] >>323 ちゃんと読んでないのでちょっと良くわからないけど, 3番の M は 2番で言う A のことではないかな? M が機体の 前上右ベクトルなんだと思う. なので,M の初期値は,2番での Aの初期値とかでいいでしょう. M = A × M は,普通の3行3列の行列演算. 行列演算がわからないなら,自分で調べるか, もう一度ここで泣くかしなさい.
326 名前:4.63267948799578E-05 [04/07/31 23:43] >>325 前者了解しますた。 一番肝心なのは後者のほうですね・・・検索しても分かりませんでした、分かる方助言をお願いしますorz M[0][0]はA[0][0]とM[0][0]からM[2][2]をかけて足したもの? もうさっぱりです(´-ω-`;)
327 名前:デフォルトの名無しさん mailto:sage [04/07/31 23:52] 3次元関連の入門書読め。 ゆとり教育って…行列の掛け算も載ってないの? まあ、なんでも教科書に載ってると思う方が間違ってるともいえるが。
328 名前:デフォルトの名無しさん mailto:sage [04/08/01 00:12] >>327 僕も指数表現とか行列演算は,プログラム作るために勉強したので, 326のいいきっかけになれば良いじゃん. このホームページには冒頭に3D関係の本に載ってないと書いてあるが, それでも,3DCGの基礎は知っとかんとこの先詰まるので, >3次元関連の入門書読め。 には賛成. >>326 これじゃだめ? ttp://shigihara.hp.infoseek.co.jp/mx13.htm ttp://www.matsusaka-u.ac.jp/~aihara/pukiwiki2/index.php?%A5%D9%A5%AF%A5%C8%A5%EB%A4%C8%B9%D4%CE%F3 ただし,プログラムでやるときは, T = A × M M = T みたいにやらないとだめだよ.
329 名前:4.63267948799578E-05 [04/08/01 00:17] >>327 DirectXの本が何冊かあるけど、どれも行列を使ったサンプルはなくSetRotation・・・。 DirectXはスレ違いだけどVBで作っているからcppのサンプルは使えないしでもうダメポ(つД`;) それと2*2の行列の計算すら載ってませんでした。。
330 名前:デフォルトの名無しさん mailto:sage [04/08/01 02:44] VBでエクセルをいろいろいじりたいんですが 参考になるサイトってありますか?
331 名前:4.63267948799578E-05 mailto:sage [04/08/01 02:50] >>330 ttp://www.bcap.co.jp/hanafusa/ ・・・orz
332 名前:4.63267948799578E-05 mailto:sage [04/08/01 03:28] Microsoft® Visual Basic® アプリケーションでは、Direct3DX ユーティリティ ライブラリによって提供される D3DXMatrixRotationX 関数、D3DXMatrixRotationY 関数、および D3DXMatrixRotationZ 関数を使って回転行列を作成する。 ここまで分かったけど、そこの見えない谷に阻まれてまs orz
333 名前:デフォルトの名無しさん mailto:sage [04/08/01 06:56] Rは登録商標だが、TMは何?
334 名前:デフォルトの名無しさん mailto:sage [04/08/01 07:43] >>332 Direct3D で回転させるの? 自分で行列演算して回転させるの? とくに実現方法にこだわらないなら,いろいろ調べてできそうなやつで やれば良いんだけどね. そもそも 3D→2D を Direct3D でやるか 自分で写像するか.. Direct3D のほうが速いと思うけど. >>333 トレードマークでしょ.って,これは誤爆なのかな?
335 名前:デフォルトの名無しさん mailto:sage [04/08/01 08:00] トレードマークって?
336 名前:デフォルトの名無しさん mailto:sage [04/08/01 08:17] TM - Trade Mark 商標? R - Registered (Trade Mark) 登録商標?
337 名前:デフォルトの名無しさん mailto:sage [04/08/01 09:27] どっちがえらいの?
338 名前:デフォルトの名無しさん mailto:sage [04/08/01 10:36] たぶん 登録商標 のほうがえろいと思うけど. ここじゃなくて,法律関係の掲示板に行ったほうがいいと思うよ.
339 名前:4.63267948799578E-05 mailto:sage [04/08/01 14:04] 結局使い方が分からない罠orz >>334 方位・角度・ロールを正確に表示しつつ回転させると、やはり回転行列を使わないと・・・。 少しロールさせた状態で機首を上げると、角度と方位が変わるとともにロールもする。 この表現にもう一ヶ月近く悩まされてますorz
340 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:09] >>339 じゃ >>323 のホームページにある3番のJavaプログラムみたいなものが VB でできればいいの? それくらいなら協力できるかも.
341 名前:4.63267948799578E-05 mailto:sage [04/08/01 22:36] >>340 まったくもってその通りです、できる範囲でいいので協力お願いしますorz 数学板ではなぜか叩かれるし、ここでは反応が薄いし・・・回転行列は以前何かあったのかな・・・。
342 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:56] はっきり言って無理だと思われ。 他人に甘えてる態度が見え見え。 とても自分で努力しているようには見えない。 きっと数学板で叩かれてきたってのもそういう部分なんじゃないの? 基本を疎かにして上辺だけ習得しようって考えているなら、ずっと習得はできないよ。
343 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:16] >>342 去年同じようなことをFlash板で言われますた。。 努力しろ!って言われても検索するところはしたし、 自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`) 行列は学校で習っているものと思われているけど、最近は習わないところが多々あるので基本とか言わないでくださいorz
344 名前:デフォルトの名無しさん mailto:sage [04/08/01 23:22] >343 その辺が根本から間違ってるんだって。 「どうしろと」じゃねーよ、自分で考えるんだよ。 学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。 なんでも誰かに教えてもらうと考えるな。 だから叩かれるんだよ。
345 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:27] >>343 > 「どうしろと」じゃねーよ、自分で考えるんだよ。 > 学校でなんでもかんでも教えてもらえると思うな、自分で調べるんだよ。 > 努力しろ!って言われても検索するところはしたし、 > 自分でこれかな?って思ったのは作って砕けてるしでどうしろと(;´Д`) 頼むから飛ばして読まないでorz てか釣りだったらスマソ
346 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:28] こっちでも矛先間違えたorz
347 名前:340 mailto:sage [04/08/01 23:30] >>341 こんなのを作ってみた. 新しいプロジェクトにはっつけてみ. Dim LocX As Double = 150 Dim LocY As Double = 0 Dim LocZ As Double = 100 Dim M(,) As Double = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress Dim Fx, Fy, Fz As Single ' 鼻先 Dim Bx, By, Bz As Single ' おしり Dim Lx, Ly, Lz As Single ' 左翼端 Dim Rx, Ry, Rz As Single ' 右翼端 Dim Tx, Ty, Tz As Single ' 尾翼 Dim gr As Graphics = MyBase.CreateGraphics If e.KeyChar = "f" Then ' 前進 LocX += 10 * M(2, 0) : LocY += 10 * M(2, 1) : LocZ += 10 * M(2, 2) Else Dim A(2, 2) As Double Dim T(2, 2) As Double If e.KeyChar = "r" Then ' 右を向く(ラダーというか自転) Dim th As Double = 22.5 * Math.PI / 180 Dim R(,) As Double = {{Math.Cos(-th), 0, -Math.Sin(-th)}, {0, 1, 0}, {Math.Sin(-th), 0, Math.Cos(-th)}} A = R End If If e.KeyChar = "u" Then ' 上を向く Dim th As Double = 5 * Math.PI / 180 Dim R(,) As Double = {{1, 0, 0}, {0, Math.Cos(-th), Math.Sin(-th)}, {0, -Math.Sin(-th), Math.Cos(-th)}} A = R End If つづく
348 名前:340 mailto:sage [04/08/01 23:30] T(0, 0) = A(0, 0) * M(0, 0) + A(0, 1) * M(1, 0) + A(0, 2) * M(2, 0) T(0, 1) = A(0, 0) * M(0, 1) + A(0, 1) * M(1, 1) + A(0, 2) * M(2, 1) T(0, 2) = A(0, 0) * M(0, 2) + A(0, 1) * M(1, 2) + A(0, 2) * M(2, 2) T(1, 0) = A(1, 0) * M(0, 0) + A(1, 1) * M(1, 0) + A(1, 2) * M(2, 0) T(1, 1) = A(1, 0) * M(0, 1) + A(1, 1) * M(1, 1) + A(1, 2) * M(2, 1) T(1, 2) = A(1, 0) * M(0, 2) + A(1, 1) * M(1, 2) + A(1, 2) * M(2, 2) T(2, 0) = A(2, 0) * M(0, 0) + A(2, 1) * M(1, 0) + A(2, 2) * M(2, 0) T(2, 1) = A(2, 0) * M(0, 1) + A(2, 1) * M(1, 1) + A(2, 2) * M(2, 1) T(2, 2) = A(2, 0) * M(0, 2) + A(2, 1) * M(1, 2) + A(2, 2) * M(2, 2) M = T End If Fx = LocX + 30 * M(2, 0) : Fy = LocY + 30 * M(2, 1) : Fz = LocZ + 30 * M(2, 2) Bx = -10 * M(2, 0) : By = -10 * M(2, 1) : Bz = -10 * M(2, 2) Lx = LocX - 20 * M(0, 0) + Bx : Ly = LocY - 20 * M(0, 1) + By : Lz = LocZ - 20 * M(0, 2) + Bz Rx = LocX + 20 * M(0, 0) + Bx : Ry = LocY + 20 * M(0, 1) + By : Rz = LocZ + 20 * M(0, 2) + Bz Tx = LocX + 10 * M(1, 0) + Bx : Ty = LocY + 10 * M(1, 1) + By : Tz = LocZ + 10 * M(1, 2) + Bz Bx += LocX : By += LocY : Bz += LocZ gr.Clear(MyBase.BackColor) gr.DrawLine(Pens.Black, Fx, Fz, Bx, Bz) gr.DrawLine(Pens.Black, Fx, Fz, Rx, Rz) gr.DrawLine(Pens.Black, Fx, Fz, Lx, Lz) gr.DrawLine(Pens.Black, Rx, Rz, Lx, Lz) gr.DrawLine(Pens.Blue, Tx, Tz, Bx, Bz) gr.DrawLine(Pens.Blue, Tx, Tz, CSng(LocX), CSng(LocZ)) End Sub
349 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:33] 本当にありがとうございますorz 後ほど結果を書きますね(知らないのがいっぱい(;´Д`))
350 名前:デフォルトの名無しさん mailto:sage [04/08/01 23:34] >345 ちゃんと読んでるよ。 じゃあ聞くが、検索以外には何をした? 書籍を調べたか? 図書館に行ったか? 検索をしたのは1ヶ月で何回だ? これかな?と思って作ったものはどこがなぜダメなのか考えたのか? それに対して色々と検証はしてみたのか? 検証をしたならその結果をまとめてあるか? 基本を学べ。 人生の基本を。 調べ方の基本を。
351 名前:340 mailto:sage [04/08/01 23:37] >>341 >数学板ではなぜか叩かれるし、 叩かれて当然なくらい簡単なことを聞いてるからだと思うよ. まぁ,ここから勉強すればいいじゃん. で,上のプログラムだが,行列の掛け算は展開して書いてある. もう間違えようがないよな.なっ? キーボードの f で前進, r で右向く, u で上向く. 左向く,下向く,ロール は自分でトライして.
352 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:41] >>350 本は3冊買いますた、プログラムをやってる先生にも聞きました(でも昔やったが忘れた、とorz)。 検索はほぼ毎日してます、ダメな部分を変えていったら地獄の一丁目にたどり着きますた。。 一度書いてやってから組んでいるからノートの半分以上は埋まったし・・・基本と言われることはしてます。 受験勉強せずになにしてんだか(;´Д`)
353 名前:340 mailto:sage [04/08/01 23:46] >>349 ちょっとバグってた. 予定してないキーを押すと機体が消える. とりあえず↓のようにしとけば回避できる. × Dim A(2, 2) As Double ○ Dim A(,) As Double = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
354 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:51] >>340 改めてありがとうございました。 これこそ基本だと言われることなのですが、 指定されたキー以外を押すと止まってしまう(そのあと何を押しても動かない)のはなぜなんでしょうか。 自分はselect case 〜でやっているので他のキーを押しても何も起こらないだけなのですが。
355 名前:4.63267948799578E-05 mailto:sage [04/08/01 23:52] >>353 って先に直してくれてましたね、度々ありがとうございます。
356 名前:デフォルトの名無しさん mailto:sage [04/08/01 23:52] VB.NETでaspxを書くときは サーバープログラムとHTML部分のどちらをうえに書くのがおすすめですか? <script runat=server> </script> ↑ 逆にしてもいいけどどちらがファイルをWindowsメモ帳で編集するときに楽か ↓ <html> </html>
357 名前:340 mailto:sage [04/08/02 00:01] >>355 実は右翼端と左翼端の座標も逆みたい. 想定座標系の裏返しに表示されてる. ちゅーことは,右回転しているようで実は左回転してた. よく検証せずに出してすまんね.
358 名前:4.63267948799578E-05 mailto:sage [04/08/02 00:07] 円周率はMath.PIでokだったのか・・・>>312 のはこのことを言ってたのかorz
359 名前:デフォルトの名無しさん mailto:sage [04/08/02 00:08] >>352 …お前は多分基本の意味を勘違いしてるだろ。 分からない事を基礎となってる部分から一つ一つ解決していけ。 まず行列の計算が分からない、理解できないんなら、 行列について勉強しろ。 それが出来たら3D関連の基礎的な本やサイトを見れば、 行列と言う物が3Dでどのように利用されるのか分かる。 プログラミングはその上で行う物だ。 お前はダメなところを変えていったというが、適当に式を変えてみたとか、 そんなんだろ? なぜおかしいかを論理的に考えて間違ってる場所を探したか? なんとなく適当に買えながら動かしてちゃんと動くのを待つ ではいつまでたってもちゃんと動かないぞ。
360 名前:340 mailto:sage [04/08/02 00:11] 2度目の修正. "r"押したときの R(,) の値 Dim R(,) As Double = {{Math.Cos(-th), 0, Math.Sin(-th)}, {0, 1, 0}, {-Math.Sin(-th), 0, Math.Cos(-th)}} と,表示のとこ. gr.DrawLine(Pens.Black, Fz, Fx, Bz, Bx) gr.DrawLine(Pens.Brown, Fz, Fx, Rz, Rx) gr.DrawLine(Pens.Black, Fz, Fx, Lz, Lx) gr.DrawLine(Pens.Black, Rz, Rx, Lz, Lx) gr.DrawLine(Pens.Blue, Tz, Tx, Bz, Bx) gr.DrawLine(Pens.Blue, Tz, Tx, CSng(LocZ), CSng(LocX)) わかりやすいように右翼を茶色にしてみた. 内部では,x-z が水平でy軸が上になってる. 表示は,手抜きで,x-z 平面を グラフィクスの y-x にそのまま表示してる.
361 名前:デフォルトの名無しさん mailto:sage [04/08/02 00:11] >そんなんだろ? ああっと、勝手に決め付けてるようで悪いが、 お前の言動を見てるとそういう匂いがしたんだ。
362 名前:359=361 mailto:sage [04/08/02 00:13] あ、進めてるところに水をさす気はないので続けてくれ。
363 名前:340 mailto:sage [04/08/02 00:31] >>362 はい. あなたの言うこともわかるのですが,この辺にしといてあげましょうよ. これからいろいろ学んで立派になってくれることを祈りつつ. で,ぼくはもう眠いので,ロールのところを書いて寝ます. If e.KeyChar = "p" Then ' 右ロール Dim th As Double = 10 * Math.PI / 180 Dim R(,) As Double = {{Math.Cos(-th), Math.Sin(-th), 0}, {-Math.Sin(-th), Math.Cos(-th), 0}, {0, 0, 1}} A = R End If おやすみなさい.
364 名前:4.63267948799578E-05 mailto:sage [04/08/02 00:53] >>340 色々手直し・追加ありがとうございます。 明日(今日)早いので帰ってきたらじっくり勉強させてもらいます。 >>361 分かってから振り返れば『そんなんだろ?』というレベルかもしれませんが、 検索するべき単語もハッキリ分からず模索している段階からみればそんな一言で片付けれるものじゃないっすorz 回転はおかしいけど悩みながら進行方向に動かしたり、直線だけどミサイルを飛ばしたりはできたんだけど・・・。 ほんと回転だけは悩まされましたorz
365 名前:デフォルトの名無しさん mailto:sage [04/08/02 01:38] 2次元の回転行列A= { cosΘ , -sinΘ } { sinΘ , cosΘ } これを3次元に展開すればX軸回転、Y軸回転、Z軸回転が作れる。 例えばX軸回転(YZ平面回転)の場合、B= { 1 , 0 , 0 } { 0 , cosΘ , -sinΘ } { 0 , sinΘ , cosΘ } となる。 それぞれ式に直すと x'=x y'=y*cos(r)-z*sin(r) z'=y*sin(r)+z*cos(r) となる。 Y軸回転、Z軸回転は自分で考えてみそ。
366 名前:デフォルトの名無しさん mailto:sage [04/08/02 06:11] >364 >検索するべき単語もハッキリ分からず模索している段階からみれば そこだよ。 基本がわかってないからそうなる。 あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。
367 名前:デフォルトの名無しさん mailto:sage [04/08/02 17:46] すいません。質問させていただきますー Console.WriteLine(result) をつかって、resultの中身を確認したいんですが、 どうやって確認したらいいんでしょうか。Msgbox()のようにダイアログが出る わけでもないようなんですが。。。よろしくお願いします。
368 名前:デフォルトの名無しさん mailto:sage [04/08/02 18:12] 出力 ウインドウを確認
369 名前:367 mailto:sage [04/08/02 18:34] >>368 お答えありがとうございます! なにやら超基本的なことを聞いてしまった みたいですいません。助かりました。
370 名前:デフォルトの名無しさん mailto:sage [04/08/02 22:19] 何となく、ConsoleとDebugとかTraceを混同しているような気がしないでもない。
371 名前:4.63267948799578E-05 mailto:sage [04/08/02 22:27] >>365 ありがとうございます。 野暮用(宿題)が増えたのでこっちに集中することはできませんが、 >>340 さんのおかげで突破口ができたのでこれや調べたのを参照しつつ早く理解できるようにがんばります。 >>366 全く知らない範囲を基本と言わないでとorz 言われたことは既にやってるし、調べて試すと言う基本的なことも想像されてる以上にやってます。 ただ論理的っていう部分だけは除きますが・・・ (・・・分からない部分が論理的に考えることができたら、そりゃ理解できてるじゃんとか突っ込みたくなる(;´Д`)) 大変申し訳ないのですが、レスのたびにどっかの文で人の努力を簡単に踏みにじってる印象を受けたので反論しています。 質問側で甘えてしまっている立場でほんと申し訳ないのですが、 > あと、他人の意見を素直に受け入れられないなら、人に聞いても何も得られないよ。 を返すとしたら ・他人を理解していなければ、その人が意見を素直に受け入れることは無理 全部を理解しろと言うわけではないけど、この大変さだけでも理解して欲しかったですorz 大変な中で叩かれると相当きつい。。 立場を弁えてないレス失礼しました。
372 名前:デフォルトの名無しさん mailto:sage [04/08/02 22:32] >371 >>359 ,>>361 に同意 何が基本かもわからないのは物事の本質を論理的に考えられないから