• 同一平面上にある4点が、一般的な位置関係にあるとき、4点を2点ずつのペアに分けて、ペアを通る直線を2本引いたときの交点を出したい
  • 散らし書きコード
my.2d.intersect <- function(v1,v2,v3,v4){
	M <- matrix(c(v2[1]-v1[1],v3[1]-v4[1],v2[2]-v1[2],v3[2]-v4[2]),byrow=TRUE,2,2)
	b <- matrix(c(-v1[1]+v3[1],-v1[2]+v3[2]),ncol=1)
	a <- solve(M,b)
	return(a)
}

my.3d.intersect.tri <- function(v1,v2,v3,v4){
	a <- my.2d.intersect(v1[1:2],v2[1:2],v3[1:2],v4[1:2])
	t <- a[1]
	v1 + (v2-v1) * t
}

v1 <- rnorm(3)
v2 <- rnorm(3)
v3 <- rnorm(3)
v4 <- rnorm(3)
v1 <- v1/sum(v1)
v2 <- v2/sum(v2)
v3 <- v3/sum(v3)
v4 <- v4/sum(v4)

v5 <- my.3d.intersect.tri(v1,v2,v3,v4)
plot3d(rbind(v1,v2,v3,v4,v5))
spheres3d(rbind(v1,v2,v3,v4),radius=0.1)
spheres3d(v5,radius=0.1,col=2)