gpt4 book ai didi

math - OpenSCAD:如何从矢量到矢量绘制圆柱体?

转载 作者:行者123 更新时间:2023-12-03 22:15:48 26 4
gpt4 key购买 nike

我在任意位置有两个对象,我想在一个和另一个之间绘制一个圆柱体。搜索数学解决方案告诉我我需要点积和叉积分别作为角度和轴,但是我无法生成四元数或将结果转换为 rotate 的参数。 .

这是我到目前为止:

function dot (v1, v2) = [v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]];
function normalize (v) = v / norm(v);
function distance (v1, v2) = sqrt(
pow(v2[0] - v1[0], 2) +
pow(v2[1] - v1[1], 2) +
pow(v2[2] - v1[2], 2)
);
function lookAt(v1, v2) =
let(n1 = normalize(v1))
let(n2 = normalize(v2))
let(v = dot(n1, n2))
let(angle = [acos(v[0]), acos(v[1]), acos(v[2])])
let(axis = normalize(cross(n1, n2)))
[0, 0, 0]; // I don't know what to return here


module cylTo(v1, v2) {
translate(v1)
rotate(lookAt(v1, v2))
cylinder(distance(v1, v2), 2);
}

v1 = [-33, -20, 22];
v2 = [20, 20, -20];

// Draw sphere 1
translate(v1)
sphere(10);

// Draw sphere 2
translate(v2)
sphere(10);

// Draw cylinder between the two
cylTo(v1, v2);
rotate()需要什么所以一个 cylinder()指向另一个对象?

最佳答案

我找到了一个简单的解决方案,可以在两点之间近似一个圆柱体,但它并不准确,因为它产生了一个药丸(带有圆形末端),而不是一个具有扁平末端的圆柱体。

// Draw cylinder between the two
hull() {
translate(v1)
sphere(2);

translate(v2)
sphere(2);
}

关于math - OpenSCAD:如何从矢量到矢量绘制圆柱体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com