function addLines(v0, v3) {
let angle = v0.angleTo(v3) * 270 / Math.PI / 10
let aLen = angle * 50,
hLen = angle * angle * 120
let p0 = new THREE.Vector3(0, 0, 0)
let rayLine = new THREE.Ray(p0, getVCenter(v0.clone(), v3.clone()))
let vtop = rayLine.at(hLen / rayLine.at(1).distanceTo(p0))
let v1 = getLenVcetor(v0.clone(), vtop, aLen)
let v2 = getLenVcetor(v3.clone(), vtop, aLen)
let curve = new THREE.CubicBezierCurve3(v0, v1, v2, v3)
let geo = new THREE.Geometry()
geo.vertices = curve.getPoints(50)
let mat = new THREE.LineBasicMaterial({color: 0xff0000})
return {
curve: curve,
lineMesh: new THREE.Line(geo, mat)
}
}
function getVCenter(v1, v2) {
let v = v1.add(v2)
return v.divideScalar(2)
}
function getLenVcetor(v1, v2, len) {
let v1v2Len = v1.distanceTo(v2)
return v1.lerp(v2, len / v1v2Len)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异