Чтобы найти плоскость, параллельную как x0, так и x1, найти перекрестное произведение этих двух векторов, мы можем сделать это вручную, так как это R:
library(pracma)
cross(x1,x2)
[1] 0 -1 1
Итак, уравнение плоскости перпендикулярно этому - в основном любой вектор, точечное произведение которого даст вам 0, что означает:
0*x + -1*y + 1*z = 0
-y + z = 0
Подробнее об объяснении можно прочитать здесь . Или в вашем сценарии вы можете думать об этом, как о плоскости ay = z (потому что x отличается).
Так что, если вы посмотрите на документацию, она говорит:
' planes3d 'и' rgl.planes 'рисуют плоскости, используя параметризацию ax + by + c z + d = 0.
У нас нет смещения, поэтому d = 0, и это оставляет нас с a = 0, b = -1 и c = 1:
plot3d(rbind(0,x1),type="l",xlim=c(0,3),ylim=c(0,3),
zlim=c(0,3),xlab="x",ylab="y",zlab="z")
lines3d(rbind(0,y),col="red")
lines3d(rbind(0,x0))
py <- matlib::Proj(y, t(XX))
segments3d(rbind( y, py),col="gray")
segments3d(rbind( O, py),col="gray")
planes3d(a=0,b=-1,c=1,col="turquoise",alpha=0.2)