- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
点 A (x1,y1,z1) 是一条线的“起点”。点 B (x2,y2,z2) 是一条线的“末端”。
仅知道 3d 空间中的线 AB,我需要找到沿与线 AB 相交的两条垂直线分别在同一点上的点 A 和 B 的点 -t 和 t 距离平面为AB线。
我的java代码目前可以得到3d中沿着一条线的一个点,但是我无法弄清楚如何在只给定一条线的情况下找到垂直线的方向 vector ,这是我拥有的唯一信息。
提前致谢。
编辑:获取线上的点工作正常,但是我认为我不明白如何从单条线上找到平面法线 vector 或如何使用它来获取垂直线。
public class ParameterizedLine {
private Vector3f originVector;
private Vector3f directionVector;
public ParameterizedLine(Line line) {
originVector = new Vector3f(line.getOrigin());
directionVector = line.getDirection().subtract(originVector);
}
public ParameterizedLine(Vector3f originVector, Vector3f directionVector) {
this.originVector = originVector;
this.directionVector = directionVector;
}
public Vector3f getPointAtDistance(float distance) {
Vector3f point = new Vector3f();
float distanceRatio = getDistanceRatio(distance);
point.x = originVector.x + (directionVector.x * distanceRatio);
point.y = originVector.y + (directionVector.y * distanceRatio);
point.z = originVector.z + (directionVector.z * distanceRatio);
return point;
}
public ParameterizedLine getPerpendicularLineAtDistance(float distance) {
Vector3f perpindicularOriginVector = getPointAtDistance(distance);
Vector3f planeNormalVector = originVector.cross(originVector.add(directionVector));
Vector3f perpindicularDirectionVector = directionVector.cross(planeNormalVector);
ParameterizedLine perpindicularLine = new ParameterizedLine(perpindicularOriginVector,
perpindicularDirectionVector);
return perpindicularLine;
}
private float getDistanceRatio(float distance) {
return distance / (originVector.distance(originVector.add(directionVector)));
}
public Vector3f getOrigin() {
return originVector;
}
public Vector3f getDirection() {
return directionVector;
}
@Override
public String toString() {
return "ParameterizedLine{" + "originVector=" + originVector + ", directionVector=" + directionVector + '}';
}
}
编辑2:在任意距离找到垂直点的明显解决方案,欢迎校对。
public Vector3f getPerpendicularPoint(float parametricDistance, float perpendicularDistance) {
Vector3f parametricPoint = getPointAtDistance(parametricDistance);
Vector3f perpendicularVector = new Vector3f();
if(directionVector.x <= directionVector.y && directionVector.x <= directionVector.z){
perpendicularVector.set(0, -directionVector.z, directionVector.y);
} else if (directionVector.y <= directionVector.x && directionVector.y <= directionVector.z){
perpendicularVector.set(-directionVector.z, 0, directionVector.x);
} else if (directionVector.z <= directionVector.x && directionVector.z <= directionVector.y){
perpendicularVector.set(-directionVector.y, directionVector.x, 0);
}
Vector3f normalizedPerpendicularVector = perpendicularVector.normalize();
Vector3f perpendicularPoint = parametricPoint.add(normalizedPerpendicularVector.mult(perpendicularDistance));
return perpendicularPoint;
}
最佳答案
单条线并不能定义唯一的平面 - 因为它属于空间中无数个平面。因此您必须提供有关飞机的附加信息。
如果没有关于该平面的附加信息,您可能想选择该线所属的任意平面:
让 (dx, dy, dz) 是你的方向 vector 。找到2个量级较大的元素,交换它们,然后将其中一个取反。将第三个元素(最小量值)设置为零。该 vector 垂直于 DirectionVector。
示例:
if (dx <= dy) and (dx <= dz) then PV = (0, -dz, dy)
然后标准化这个 vector uP = PV/|PV|还有你的目标点
Ta = A +- t * uP(两点)
Tb = B +- t * uP(两点)
请注意,线 AB 和所有点 A、B、Ta1、Ta2、Tb1、Tb2 位于同一平面(任意选择)
关于java - 在与 3d 中给定线同一平面上的垂直线上查找距离 t 的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340313/
我想在80个字符处添加一个标尺。我知道您可以add rulers to CodeMirror,但是我不知道是否应该将the corresponding javascript放在文件中的某个位置,或者放
我正在使用plotly包,并尝试向图形添加水平线。有什么办法使用plotly吗? 可以使用ggplot2和ggplotly函数完成此操作,如下所示: library(plotly) p % add
我想在 org.eclipse.xtext.ui.editor.embedded.EmbeddedEditor 中的 120 个字符后显示一条垂直线(Eclipse 措辞中的打印边距)。这是否以某种方
我的想法是制作一个几乎像 Lollipop 一样的圆圈(在我的例子中是一个矩形)的底部有一条无限长的垂直线。我读到这可以使用 css :after 来完成,但是 psuedoelements 确实限制
我正在尝试使用 Bootstrap 在中间设置一 strip 有按钮的垂直线。 使用Bootstrap简单竖线:
我想知道如何用一条直线连接两个 div 元素,这条直线的距离有点像本网站中的那条线: JSFiddle link: https://jsfiddle.net/mcbvb8m2/ 对于水平和垂直 div
我有一个数字类型的输入,我应该将输入的值格式化为返回字符串的特定格式,因此作为解决方案,我添加了第二个字符串类型的输入并隐藏了输入 [type=number] 但用户只看到输入 [type=strin
我正在尝试创建一个教育时间表。应该有一条垂直线(红色)从“毕业帽”后面开始,然后穿过所有时间线后(绿色)。 这是我到目前为止得到的: .iconspace { position: relati
对于给定的矩形 R1 我试图找出哪些是可以与其相交的其他矩形 IF 我画了一个 vector 线段。 与 R1 相交的矩形标记为红色。 每个矩形都由其(top, left) 和(bottom, rig
我想知道是否可以激活悬停在图形上方的垂直线并突出显示点? 例如,在此图中:http://www.highcharts.com/stock/demo/compare ->将鼠标悬停在图形线上时,每个系列
我需要在我的图文上放置一 strip 有标签的垂直线,例如本例中的国庆节线 - http://www.fusioncharts.com/dev/chart-attributes.html?chart=
IE11不支持播放作品音频文件。这就是为什么我使用 ogv.js javascript库在IE11中播放它的原因。该库将音频数据流传输到IE11的内部Flash Player并进行播放。问题是在并行播
我在 android 中使用 achartengine 图形库制作折线图。有人可以建议我放置十字准线(当用户触摸图表时在所有数据点上移动的垂直线)我的要求符合这样的实现 http://www.jqch
我正在为子菜单项制作 TreeView ,我快完成了。最后一个元素的问题,现在看起来如何: 我想看起来像: DEMO HTML: Example 1
如何像此处那样在我的网页边框周围创建边框? http://www.callieschweitzer.com/ 我尝试做一条水平线,但很难将其与垂直线对齐……不过我觉得有一种更简单的方法。有什么想法吗?
这个问题在这里已经有了答案: What does the vertical pipe ( | ) mean in C++? (4 个答案) 关闭 5 年前。 我用了双竖“||”作为 bool “或”
我使用 Pandoc (http://johnmacfarlane.net/pandoc/README.html) 及其 Markdown 处理器。当我使用 Pandoc 将下面的网格转换为 PDF(
谁能告诉我如何扩展 Chart.js v2.0。我需要折线图中的垂直线,我想实现类似于 http://jsfiddle.net/dbyze2ga/ 的东西. Chart.types.Line.exte
我已经创建了一个自定义通知 XML 文件。我想画一条垂直线,就像下图中的水平线一样。我一直在尝试各种方法无法实现它。 xml 中从水平到垂直的方向对我没有帮助。 查看下面的屏幕截图:我想要垂直线而不是
如何使用标准图像处理过滤器(来自 OpenCV)从图像中去除长水平和垂直线? 图像是黑白的,所以删除意味着简单地涂成黑色。 插图: 我目前正在用 Python 执行此操作,遍历像素行和列并检测连续像素
我是一名优秀的程序员,十分优秀!