【事前学習】 高校のベクトル単元の媒介変数表示について復習しておきましょう。
媒介変数表示
Prametric Representation
本章では媒介変数を用いてベクトルで幾何学図形を定義する方法について学ぶ。ベクトル方程式については前回は媒介変数を用いないケースを扱ったが、今回は媒介変数を用いるケースを扱う。
方程式による表現 | 媒介変数表示 | ベクトル方程式 |
---|---|---|
$y=2x$ | \begin{eqnarray} \left\{ \begin{array}{l} x=t \\ y=2t \end{array} \right. \end{eqnarray} | $\vec a=(1,2)$ $\Vec{OP}=t \vec a$ |
$x^2+y^2=1$ | \begin{eqnarray} \left\{ \begin{array}{l} x=\cos t \\ y=\sin t \end{array} \right. \end{eqnarray} | $|\Vec{OP}|=1$ |
Lesson
- $\triangle \rm{OAB}$ がある。負でない実数 $s、t$ が、条件 $s+t=1$ を満たしながら動くとき、等式 $\Vec{OP}=s\Vec{OA}+t\Vec{OB}$ で表わされる点 P の存在範囲を求めよ。
- $\triangle \rm{OAB}$ がある。負でない実数 $s、t$ が、条件 $s+t=2$ を満たしながら動くとき、等式 $\Vec{OP}=s\Vec{OA}+t\Vec{OB}$ で表わされる点 P の存在範囲を求めよ。
- 点 A$(1, 2)$ を通り、ベクトル $\vec d=(4, 3)$ に平行な直線について次の問いに答えよ。
- 直線上の任意の点を P$(x, y)$ として、$\Vec{AP}$ と $\vec d$ の間に成り立つベクトル方程式を示せ。
- 直線上の任意の点を P$(x, y)$として、$\Vec{OP}$ と $\Vec{OA}$ と $\vec d$ の間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
- 2点 A$(-2, 1)$、B$(1, 3)$ を通る直線について次の問いに答えよ。
- 直線上の任意の点を P とし媒介変数 $t$ を用いて、$\Vec{AP}$ と $\Vec{AB}$ との間に成り立つベクトル方程式を示せ。
- 同様に、$\Vec{OP}$ と $\Vec{OA}$ と $\Vec{OB}$ との間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
- 点 A$(x_0, y_0)$ を通り、ベクトル $\vec d=(a, b)$ に平行な直線について次の問いに答えよ。
- 直線上の任意の点を P$(x, y)$ として、$\Vec{AP}$ と $\vec d$ の間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
Answer
- 線分 AB
- $\Vec{OA'}=2\Vec{OA}, \Vec{OB'}=2\Vec{OB}$ とすると線分 A'B'
- $\Vec{AP}=t \vec d$
- $\Vec{OP}=\Vec{OA} + t \vec d$
- $x=4t+1, y=3t+2$
- $3x-4y=-5$
- $\Vec{AP}=t \Vec{AB}$
- $\Vec{OP}=(1-t) \Vec{OA} + t \Vec{OB}$
- $x=3t-2, y=2t+1$
- $2x-3y=-7$
- $\Vec{AP}=t \vec d$
- $x=at+x_0, y=bt+y_0$
- $\frac{x-x_0}{a}=\frac{y-y_0}{b}$
Lesson 3D
- 点 A$(2, -3, 5)$ を通り、ベクトル $\vec d=(1, 2, -1)$ に平行な直線について次の問いに答えよ。
- 直線上の任意の点を P$(x, y, z)$ として、$\Vec{AP}$ と $\vec d$ の間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y, z$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
- 2点 A$(1, 2, 3)$、B$(-5, -7, 9)$ を通る直線について次の問いに答えよ。
- 直線上の任意の点を P$(x, y, z)$ として、P、A、B の間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y, z$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
- 点 A$(x_0, y_0, z_0)$ を通り、ベクトル $\vec d=(a, b, c)$ に平行な直線について次の問いに答えよ。
- 直線上の任意の点を P$(x, y, z)$として、$\Vec{AP}$ と $\vec d$ の間に成り立つベクトル方程式を示せ。
- 点 P の座標 $x, y, z$ を、媒介変数 $t$ を用いて表せ。
- 直線の方程式を求めよ。
- 直線 $l : 2x-6=2-y=z+1$ と、点 A$(3, 2, 3)$ について次の問いに答えよ。
- 直線 $l$ の方向ベクトルを求めよ。
- 直線 $l$ に平行で、点 A を通る直線の方程式を求めよ。
Answer
- $\Vec{AP}=t \vec d$
- $x=t+2, y=2t-3, z=-t+5$
- $x-2=\frac{y+3}{2}=5-z$
- $\Vec{AP}=t \Vec{AB}$
- $x=-6t+1, y=-9t+2, z=6t+3$
- $\frac{1-x}{6}=\frac{2-y}{9}=\frac{z-3}{6}$
- $\Vec{AP}=t \vec d$
- $x=at+x_0, y=bt+y_0, z=ct+z_0$
- $\frac{x-x_0}{a}=\frac{y-y_0}{b}=\frac{z-z_0}{c}$
- $(1, -2, 2)$ $\frac{x-3}{1}=\frac{y-2}{-2}=\frac{z+1}{2}$ と変形した分母が方向ベクトル
- $2x-6=-y+2=z-3$ $\frac{x-3}{1}=\frac{y-2}{-2}=\frac{z-3}{2}$
- $(1, -2, 2)$ $\frac{x-3}{1}=\frac{y-2}{-2}=\frac{z+1}{2}$ と変形した分母が方向ベクトル
Extra Lesson
three.js editor を使って、3Dの図形を表示してみましょう。
- Lesson 1. のベクトルを表示してみましょう。
- Lesson 2. のベクトルを表示してみましょう。
- Lesson 3. のベクトルを表示してみましょう。
three.js editorの操作方法
視点移動
- SCENEタブでSceneをダブルクリックすると原点中心になる
- SCENEタブでオブジェクトをダブルクリックするとそのオブジェクトが中心に来て拡大される
- 左ボタンでマウスドラッグするとビューを画面の中心周りに回転できる
- 右ボタンでマウスドラッグするとビューを平行移動できる
オブジェクトの生成、変形
- Edit/Addでオブジェクト、ライト、カメラを追加できる
- SCENEタブで生成、変形したいオブジェクトを選べる
- Edit/Cloneで選ばれているオブジェクトを複製できる
- Edit/Deleteで選ばれているオブジェクトを消去できる
- OBJECTタブで名前Name、中心の位置Position、回転Rotation、拡大縮小Scaleを変更できる
- MATERIALタブで色などオブジェクトの材質を変更できる
データの保存
- File/Publishで、ウェブコンテンツとしてzipファイルで出力できる
- File/Export Sceneでシーン全体をJSON形式で保存、File/ImportでJSON形式のシーンを読み込みできる(SCRIPTは保存されないので注意!)
視点移動機能付の環境構築
- Add/Directional Light で光源を追加(2個追加して2方向から照らすのもよい)
- Scene に以下のコードをアタッチ
//ベクトルの成分 Lesson 3D 1. 3) const A=new THREE.Vector3(1, -4, 7); const B=new THREE.Vector3(7 , 2, 5); vector(A, B, 0.05); const C=new THREE.Vector3((A.x+B.x*2)/3, (A.y+B.y*2)/3, (A.z+B.z*2)/3); sphere(C, 0.5, 0xff0000); const distance=30; //原点からの距離 //以下は変更しないでください scene.add( new THREE.AxesHelper(100) );//座標軸 function sphere(position, radius, color=0xffffff){ const sphere = new THREE.Mesh( new THREE.SphereGeometry(radius,32,16), new THREE.MeshPhongMaterial({ color:color, specular:0x444444, shininess:30, emissive:color&0x333333 }) ); sphere.position.copy(position); scene.add(sphere); } function vector(start, end, radius, color=0xffffff){ const v=(new THREE.Vector3).subVectors(end,start); const l=v.length(); const material = new THREE.MeshPhongMaterial({ color:color, specular:0x444444, shininess:30, emissive:color&0x333333 }); const rotation = new THREE.Euler( Math.atan2(v.z,Math.sqrt(v.x*v.x+v.y*v.y)), 0, -Math.atan2(v.x,v.y), "ZXY" ); const cone=new THREE.Mesh( new THREE.ConeGeometry(radius*2, radius*6, 32), material ); cone.position.copy(new THREE.Vector3).addVectors( start, v.clone().multiplyScalar((l-0.15)/l) ); cone.rotation.copy(rotation); scene.add(cone); const cylinder=new THREE.Mesh( new THREE.CylinderGeometry(radius,radius,l-0.3,32), material ); cylinder.position.copy(new THREE.Vector3).addVectors( start, v.clone().multiplyScalar(0.5*(l-0.3)/l) ); cylinder.rotation.copy(rotation); scene.add(cylinder); } function line(position1, position2, color=0xfffff){ const line = []; line.push(position1); line.push(position2); scene.add(new THREE.Line( new THREE.BufferGeometry().setFromPoints(line), new THREE.LineBasicMaterial({color:color}) )); } function pointermove(event){ const longitude=(event.offsetX/window.innerWidth-0.5)*6.28; const latitude=(event.offsetY/window.innerHeight-0.5)*3; camera.position.set( Math.cos(longitude)*Math.cos(latitude), Math.sin(latitude), Math.sin(longitude)*Math.cos(latitude) ).multiplyScalar(distance); camera.lookAt( scene.position ); }
【事後学習】 媒介変数を用いたベクトル方程式の立式をマスターしておきましょう。