clear; close all; p0 = [100, 0, 0]'; p1 = [0, 100, 0]'; p2 = [0, 0, 100]'; p0x = p0(1); p0y = p0(2); p0z = p0(3); p1x = p1(1); p1y = p1(2); p1z = p1(3); p2x = p2(1); p2y = p2(2); p2z = p2(3); %干渉面F n = [0,0,1]'; P = [0,0,50]'; %交点Q0: P0-P2 v0 = P - p0; v1 = p2 - p0; t = dot(n,v0) / dot(n,v1); Q0 = p0 + t*v1; %交点Q1: P1-P2 v0 = P - p1; v1 = p2 - p1; t = dot(n,v0) / dot(n,v1); Q1 = p1 + t*v1;
>> Q0 Q0 = 50 0 50 >> Q1 Q1 = 0 50 50
Processingでの表示
import com.jogamp.opengl.GLProfile; { GLProfile.initSingleton(); } float rx=0.0; float ry=0.0; float rz=0.0; void setup() { size(400, 400, P3D); } float coord_len = 500; void drawCoord(){ stroke(255, 0, 0); line(0, 0, 0, coord_len, 0, 0); stroke(0, 255, 0); line(0, 0, 0, 0, coord_len, 0); stroke(0, 0, 255); line(0, 0, 0, 0, 0, coord_len); } void draw() { background(204); camera(300.0, 350.0, 520.0, width/2, height/2, 100.0, 0.0, 1.0, 0.0); translate(width/2, height/2, 0); rotateX(rx); rotateY(ry); rotateZ(rz); drawCoord(); line(50,0,50,0,50,50); stroke(0, 0, 0); beginShape(); vertex(100, 0, 0); vertex( 0, 100, 0); vertex( 0, 0, 100); endShape(); if (keyPressed==true) { switch(keyCode) { case UP: rx=rx-0.05; break; case DOWN: rx=rx+0.05; break; case LEFT: ry=ry-0.05; break; case RIGHT: ry=ry+0.05; break; } } } void mouseDragged() { rz=mouseX/20+0.05; println(rz); }