投稿

11月, 2023の投稿を表示しています

N88-BASICで衝突 (4回目)

イメージ
2023/11/21(火) N88-BASICで衝突 (4回目)   (collision)   跳ね返りの動作(詳しくは前回参照) ■ 動作 Δt = 1/60 s としています   N88-BASIC(86)(PC-98)用(coll004.bas ) N88-BASIC(88)(PC-88)用(coll004x.bas)   coll004?.basは 1050 VSYNC = &HA0 '--- PC-98:&HA0 , PC-88:&H40 が&HA0 or &H40の違いだけです   ■ 注意点 球同士と壁の衝突と反発を表示 壁と球の間に挟まった時など 球がめり込む現象が起き 反発が無限に繰り返される事を 防ぐため重なり中は反発しない 処理を追加しました   挙動がおかしい所がまだまだありますが ご了承下さい   VL,NL ,XL -BASICと blg~.zip ( coll 00 4? .bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで衝突 (3回目)

イメージ
2023/11/18(土) N88-BASICで衝突 (3回目)   (collision) 球と壁の衝突と跳ね返り   ■ 前提 https://ulprojectmail.blogspot.com/2023/11/restitution.html 反発係数 より   ▼ 定義 大文字(太字)はベクトル 右下添字は球番号   e   :反発係数(衝突面に垂直) u   :減衰割合(衝突面に水平) P i :球の位置 m i :球の質量 V i :球の速度 N   :衝突面の法線 T i :衝突面の接線 v i :衝突面に垂直方向の速度 u i :衝突面に水平方向の速度 '   :衝突後   uは回転や摩擦力などを無視した挙動の近似   ▼ ベクトル表記( V  → V ') N  = ( P 1  - P 2 )/| P 1  - P 2 | v 1  = N ・ V 1   v 2  = N ・ V 2   v 1 '= {m 1 v 1  + m 2 v 2  + em 2 (v 2  - v 1 )}/(m 1  + m 2 ) v 2 '= {m 1 v 1  + m 2 v 2  - em 1 (v 2  - v 1 )}/(m 1  + m 2 )   T 1  = ( V 1  - v 1 N )/| V 1  - v 1 N | or   ( V 2  - v 2 N )/| V 2  - v 2 N | or 0   T 2  =   N  × T 1   u 1k  = T k ・ V 1   u 2k  = T k ・ V 2   u 1k '= {m 1 u 1k  + m 2 u 2k  - um 2 (u 2k  - u 1k )}/(m 1  + m 2 ) u 2k '= {m 1 u 1k  + m 2 u 2k  + um 1 (u 2k  - u 1k )}/(m 1  + m 2 )   衝突後の速度ベクトルは V 1 '= u 11 ' T 1  + u 12 ' T 2  + v 1 ' N   V 2 '= u 21 ' T 1  + u 22 ' T 2  + v 2 ' N     ▼ 外積 T 2  =

反発係数

イメージ
2023/11/16(木) 反発係数   (coefficient of restitution)   球同士の跳ね返り(rebound)   ■ 導出 ▼ 定義 大文字(太字)はベクトル 右下添字は球番号   e   :反発係数(衝突面に垂直) u   :減衰割合(衝突面に水平) P i :球の位置 m i :球の質量 V i :球の速度 N   :衝突面の法線 T i :衝突面の接線 v i :衝突面に垂直方向の速度 u i :衝突面に水平方向の速度 '   :衝突後   uは回転や摩擦力などを無視した挙動の近似   ▼ 垂直成分と水平成分           図1. 垂直成分と水平成分の取り出し方   ▼ 衝突面に垂直な成分 m 1 v 1  + m 2 v 2  = m 1 v 1 '+ m 2 v 2 '  … 運動量保存則 e = -(v 1 '- v 2 ')/(v 1  - v 2 )  … 反発係数 より e(v 2  - v 1 ) = v 1 '- v 2 '     em 2 (v 2  - v 1 ) = m 2 v 1 '- m 2 v 2 ' +) m 1 v 1  + m 2 v 2  = m 1 v 1 '+ m 2 v 2 ' ─────────────── em 2 (v 2  - v 1 ) + (m 1 v 1  + m 2 v 2 ) = (m 1  + m 2 )v 1 ' v 1 '= {m 1 v 1  + m 2 v 2  + em 2 (v 2  - v 1 )}/(m 1  + m 2 )     em 1 (v 2  - v 1 ) = m 1 v 1 '- m 1 v 2 ' -) m 1 v 1  + m 2 v 2  = m 1 v 1 '+ m 2 v 2 ' ─────────────── em 1 (v 2  - v 1 ) - (m 1 v 1  + m 2 v 2 ) = -(m 1  + m 2 )v 2 ' v 2 '= {m 1 v 1  + m 2 v 2  - em 1 (v 2  - v 1 )}/(m 1  + m 2 )   ▼

掛け算の順序問題

2023/11/14(火)   掛け算の順序問題     2人に配ります。1人7本ずつ配ります。全部で何本必要? 2 × 7 = 14本 こちらは〇 7 × 2 = 14本 こちらは×などとするのは間違いです   どちらも 2人 × 7本/人 = 7本/人 × 2人 = 14本 で正解です   1人7本ずつ配ります。2人に配ります。全部で何本必要? 7 × 2 = 14本 こちらは〇 2 × 7 = 14本 こちらは×などとするのも間違いです     ここで掛け算を足し算で表してみることにします   7本/人×1人 = 7(本/人)人 … (1人当り7本ずつ配った時の1人分の本数) とすると 2人 × 7本/人 = 7本/人 × 2人 = 7(本/人)人 + 7(本/人)人  … (1人当たり7本ずつ配った時の1人分の本数)が2人分   つまり (1人当たり7本ずつ配った時の2人分の本数) = 7本 + 7本 = 14本   2人×1本/人 = 2人(本/人) … (1人当り1本ずつ配った時の2人分の本数) とすると 2人 × 7本/人 = 7本/人 × 2人 = 2人(本/人) + 2人(本/人) + 2人(本/人) + 2人(本/人) + 2人(本/人) + 2人(本/人) + 2人(本/人)  … (1人当たり1本ずつ配った時の2人分の本数)が7本分   つまり (1人当たり7本ずつ配った時の2人分の本数) = 2本 + 2本 + 2本 + 2本 + 2本 + 2本 + 2本 = 14本 (これの意味を理解するのは難しいかもしれません。)   単位を省くと 2 × 7  =  7 × 2 =  7 + 7 =  2 + 2 + 2 + 2 + 2 + 2 + 2 = 14 2 × 7は7が2個と、2が7個の両方の意味があり 掛け算の順序を入れ替えても同じ意味になります   χが2個あることを 2χ と書きますが (χ × 2) の順でなければならないと小学校で 習っていれば (2 × χ) と書くのは間違いで χ2 と書くべきで 2χ と書く事が理解できないなんて事が 起こります   以前は 割り算を習う前に単位(本/人)を理解するのは困難なので 一旦順序を決めて教えて割り算を習得した後 2人 × 7本/人 = 7本/人 × 2人 = 14本 を理解すれば良い

N88-BASICで衝突 (2回目)

イメージ
2023/11/12(日) N88-BASICで衝突 (2回目)   (collision) 球と壁   ■ 前提 https://ulprojectmail.blogspot.com/2023/11/collision-2.html 衝突 (2回目) より   ▼ 定義 大文字(太字)はベクトル 右下添字は球番号   P :球の位置ベクトル m:球の質量 V :球の速度 A :球の加速度 t:経過時間 r:球の半径 E: 球の移動方向の単位ベクトル R: 球の軌跡 s:距離 ':衝突後     ▼ 衝突 ΔV  = AΔ t ΔR  = VΔ t + (1/2) AΔ t 2   v = | ΔR |  … 速さ   P  = P 1  - W - r 1 N   … 壁+半径を原点にした球1の位置   s = -( P ・ N ) / ( E ・ N )  … 移動方向の壁までの距離 (ただし E ・ N  = 0 の時は壁に平行なため衝突しない)   s < 0の時、壁は後(|s| は距離) s ≧ 0の時、壁は前(s は距離)   ▼ 衝突(|Δt| << 1のとき) d V  = A dt d P  = V dt   ■ 動作 N88-BASIC(86)(PC-98)用(coll002.bas )は、マウス N88-BASIC(88)(PC-88)用(coll002x.bas)は、キーボード で速度を入力し球同士と壁の衝突を表示   coll002?.basは 1050 PC98 = 1 '--- 1:PC-98 , 0:PC-88 が1 or 0の違いだけです   VL,NL ,XL -BASICと blg~.zip ( coll 00 2? .bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

衝突 (2回目)

イメージ
2023/11/6(月) 衝突 (2回目)   (collision)   球と 壁 (平面)の衝突   ■ 導出 ▼ 定義 大文字(太字)はベクトル 右下添字は球番号(今回1のみ)   P :球の位置ベクトル V :球の速度 A :球の加速度 t:経過時間 r:球の半径 E: 球の移動方向の単位ベクトル R: 球の軌跡 s:距離 ':衝突後 N :壁の法線(壁から球方向を正とする) W :壁の位置(壁平面上の任意の点)   ▼ 衝突 Δ V  = A Δt Δ P  = V Δt + (1/2) A Δt 2   v = |Δ P |  … 速さ     図1. -s(E・N) = P・N   P  = P 1  - W - r 1 N   … 壁+半径を原点にした球1の位置   P ・ N     … 壁から球中心までの垂直距離(負:壁の中) s E      … 移動方向の壁までのベクトル -s E ・ N   … 壁から球中心までの垂直距離 P ・ N  = -s E ・ N   s = -( P ・ N ) / ( E ・ N )  … 移動方向の壁までの距離( E ・ N  ≠ 0)   E ・ N  ≧ 0 の時、壁に平行または後ろ s ≧ 0の時、壁は前(s は距離) P ・ N  < 0 の時、壁の中   ▼ 衝突(|Δt| << 1のとき) d V  = A dt d P  = V dt     ■ 結果 ▼ 定義 大文字(太字)はベクトル 右下添字は球番号   P :球の位置ベクトル m:球の質量 V :球の速度 A :球の加速度 t:経過時間 r:球の半径 E: 球の移動方向の単位ベクトル R: 球の軌跡 s:距離 ':衝突後 N :壁の法線(壁から球方向を正とする) W :壁の位置(壁平面上の任意の点)   ▼ 衝突 Δ V  = A Δt Δ P  = V Δt + (1/2) A Δt 2   v = |Δ P |  … 速さ   P  = P 1  - W - r 1 N   … 壁+半径を原点にした球1の位置   s = -( P ・ N ) / ( E ・ N )  … 移動方向の壁までの距離( E ・ N  ≠ 0)   E ・ N  ≧ 0 の時、壁に平行または後ろ s ≧ 0の時、壁は前(s は距