当前位置:  开发笔记 > 开发工具 > 正文

rgl矢量图:显示正交矢量的直角

如何解决《rgl矢量图:显示正交矢量的直角》经验,为你挑选了0个好方法。

matlib包中,https://github.com/friendly/matlib/,我有一个函数,vectors3d()用于绘制几何矢量图.

下面的代码给出了一个示例图,显示了单位矢量"J"及其在X,Y,Z轴上的一些投影.在调用中segments3d,每个参数都是一个2 x 3矩阵,给出了开始/结束坐标.

if (!require(matlib)) devtools::install_github(friendly/matlib)
library(matlib)
library(rgl)

vec <- rbind(diag(3), c(1,1,1))
rownames(vec) <- c("X", "Y", "Z", "J")
open3d()
vectors3d(vec, col=c(rep("black",3), "red"), lwd=2)
# draw the XZ plane, whose equation is Z=0
planes3d(0, 0, 1, 0, col="gray", alpha=0.2)
# show projections of the unit vector J
segments3d(v1 <- rbind( c(1,1,1), c(1, 1, 0)))
segments3d(v2 <- rbind( c(0,0,0), c(1, 1, 0)))
segments3d(v3 <- rbind( c(1,0,0), c(1, 1, 0)))
segments3d(v4 <- rbind( c(0,1,0), c(1, 1, 0)))

矢量3D演示

我想在此添加直角线,|_以表明我使用的矢量对segments3d是正交的.我在下图中手工绘制了这些.但我不知道如何计算这种形式的给定矢量对所需的小线段,比如说v1v2.我愿意假设每个|_段的长度都是一个很小的数字,比如0.05. 矢量3D demo2

编辑:问题简化为如下:鉴于三点,p1,p2,p3,找到点标p21,p23p123下面的图所示.前两个是找到沿两个点之间的线的点的简单的例子,但我难倒上找到第三个点的坐标,p123即一个点的距离的位置d沿平行的线到线p2->p3起始于p21.

的Vector3D-图

在R中,到目前为止我所拥有的是

#' Find position of a point along a line from x1 to x2
point_on_line <- function(x1, x2, d, absolute=TRUE) {
    v <- x2 - x1
    if (!absolute) v <- v / len(v)
    x1 + d * v
}

p1 <- c(0,0,0)
p2 <- c(1,1,0)
p3 <- c(1,1,1)

(p21 <- point_on_line(p2, p1, .10))
(p23 <- point_on_line(p2, p3, .10))
points3d(rbind(p21, p23), size=10, col="red")

这给了我下面的图表.有人可以帮我完成吗?

在此输入图像描述

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有