高校数学10分プログラミング(数学B編 1.平面上のベクトル)3日目「位置ベクトルを考える」解説
マガジンリスト > 数学B編 1.平面上のベクトル > 3日目 解説
本日の課題、おつかれさまでした。
課題の点の位置ベクトルを求めて、キャンバス上に描くプログラムを作成することができたでしょうか。
解答例
今回の課題の点の位置ベクトルを求めて、キャンバス上に描くプログラムの例を示します。
// 位置ベクトルを描く
void setup(){
size(500,500,P2D);
noLoop();
float x_range = 10.0; // x軸の表示範囲 -x_rangeからx_rangeまで
float y_range = 10.0; // y軸の表示範囲 -y_rangeからy_rangeまで
setAxes(x_range, y_range); // 座標軸の準備
PVector a = new PVector(2.0, 3.0);
PVector b = new PVector(5.0, 2.0);
PVector c = new PVector(-2.0, -7.0);
float m = 3.0;
float n = 5.0;
// (1) 線分ABをm:nに内分する点
PVector p1 = a.copy().mult(n).add( b.copy().mult(m) ).mult(1.0/(m+n));
// (2) 線分ABの中点
PVector m1 = a.copy().add(b.copy()).mult(1.0/2.0);
// (3) 線分ABをm:nに外分する点
PVector q1 = a.copy().mult(-n).add( b.copy().mult(m) ).mult(1.0/(m-n));
// (4) 線分ABをn:mに外分する点
PVector q2 = a.copy().mult(-m).add( b.copy().mult(n) ).mult(1.0/(n-m));
// (5) △ABCの重心
PVector g = a.copy().add( b.copy() ).add( c.copy() ).mult(1.0/3.0);
// 以下にグラフを描いていく
noFill(); // グラフの中身を塗りつぶさない
stroke(0,0,0); // グラフの線の色を黒色に設定
// キャンバスにベクトルを描画
arrow(0.0, 0.0, a.x, a.y, x_range);
arrow(0.0, 0.0, b.x, b.y, x_range);
arrow(0.0, 0.0, c.x, c.y, x_range);
// (1)の位置ベクトルを赤色で描く
stroke(255,0,0);
arrow(0.0, 0.0, p1.x, p1.y, x_range);
// (2)の位置ベクトルを青色で描く
stroke(0,0,255);
arrow(0.0, 0.0, m1.x, m1.y, x_range);
// (3)(4)の位置ベクトルを緑色で描く
stroke(0,255,0);
arrow(0.0, 0.0, q1.x, q1.y, x_range);
arrow(0.0, 0.0, q2.x, q2.y, x_range);
// (5)の位置ベクトルを水色で描く
stroke(0,255,255);
arrow(0.0, 0.0, g.x, g.y, x_range);
}
ソースコード2 点の位置ベクトルを求めて、キャンバス上に描くプログラム(完成版)
ソースコード2を、スケッチ「drawPositionVector」の 「drawPositionVector」タブのテキストエディタ部分に書いて実行すると、実行ウィンドウのキャンバス上に、点$${\mathrm{A,B,C}}$$の位置ベクトルが黒色、課題(1)の位置ベクトルが赤色、課題(2)の位置ベクトルが青色、課題(3)(4)の位置ベクトルが緑色、課題(5)の位置ベクトルが水色でそれぞれ描かれます(図2)。
本日は以上です。
明日は、ベクトルと図形の性質について考えていきます。
明日もよろしくお願いします。
読んだ感想などをお寄せください
本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。(お問合せフォームの本文に、本記事のタイトルを入れてください。)
MK’s papa