如何在3D球体上绘制球形三角形?

假设您知道球形三角形的三个顶点.
然后,如何在3D球体上绘制侧面?

我需要一些Python代码才能在Blender 3d建模软件中使用.

我已经在Blender中用3D完成了球体.

谢谢&快乐搅拌器.

注1:

我在球面上有一个球面三角形的3个点/顶点(p1,p2,p3)
但是我需要在3D中跟踪球体的边缘

那么确定球面上三角形的每个点对之间的所有顶点所需的方程是什么
从p1到p2的3个边-从p2到p3和从o3到p1

我知道这与球体上的大地测量学大圆有关
但找不到合适的方程式来进行球坐标系中的计算!

谢谢

大圈子

看到一个大圆的解并直接在球坐标中看到tehsolution会很有趣!

但在欧洲大陆空间中仍然很有趣

谢谢

好吧,我使用了2点之间的线段的想法

但没有像以前那样做

我使用了另一种方法-贝塞尔曲线插值**

我用贝塞尔曲线将线参数化
然后细分并计算为弦扬声,将弦上每个细分的贝塞尔点的比率和角度
而且效果很好而且非常精确

但是看看如何用较早的方法完成它会很有趣
但不确定如何执行迭代循环?

你如何在这里加载python代码
刚用Ctrl-V过去了吗?

谢谢和快乐2.5

我确实使用搅拌机论坛
但是无法保证始终获得明确的答案!

这就是为什么我在这里尝试-碰巧

我做了第一个优势似乎工作
现在必须进行循环以获得第一个边的多段,然后再做其他边

2-其他主题
  我在这里打开贝塞尔曲线三角形贴片上的帖子
 我知道这不是一个完整的工具
但只是为了展示它是如何完成的
你有没有想过Python皮做这些triangel补丁
我确实在搅拌机的泡沫上问了这个问题,没有答案
IRC python和sems也都死了
可能是伙计们太忙了,应该在一周或两周内完成2.5 Beta版本

嘿非常感谢您进行此数学讨论
如果我有问题明天再回来

快乐数学和2.5

解决方法:

创建正弦网格

在Blender中创建正弦波网格的Python代码:

import math
import Blender
from Blender import NMesh

x = -1 * math.pi

mesh = NMesh.GetRaw()
vNew = NMesh.Vert( x, math.sin( x ), 0 )
mesh.verts.append( vNew )

while x < math.pi:
 x += 0.1
 vOld = vNew
 vNew = NMesh.Vert( x, math.sin( x ), 0 )
 mesh.verts.append( vNew )
 mesh.addEdge( vOld, vNew )

NMesh.PutRaw( mesh, "SineWave", 1 )
Blender.Redraw()

代码的解释为:http://davidjarvis.ca/blender/tutorial-04.shtml

绘制边线的算法

画一个线段与画三个线段相同,因此问题可以重述为:

How do you draw an arc on a sphere,
given two end points?

换句话说,在球体上的以下两个点之间绘制弧:

> P1 =(x1,y1,z1)
> P2 =(x2,y2,z2)

通过沿着弧P1P2绘制许多中点来解决此问题,如下所示:

>计算球体的半径:

R = sqrt( x12 + y12 + z12 )

>计算P1和P2之间的线的中点(m):

Pm = (xm, ym, zm)
xm = (x1 + x2) / 2
ym = (y1 + y2) / 2
zm = (z1 + z2) / 2

>计算到P1和P2之间的线的中点的长度:

Lm = sqrt( xm2, ym2, zm2 )

>计算球体半径与中点长度的比值:

k = R / Lm

>计算沿圆弧的中点:

Am = k * Pm = (k * xm, k * ym, k * zm)

对于P1到P2,创建两个边:

> P1到上午
>上午到P2

两个边缘将切入球体.要解决此问题,请计算P1Am和AmP2之间的中点.中点越多,线段将越接近球体的表面.

由于Blender的计算相当精确,因此生成的弧可能会(渐近地)被球体隐藏.创建三角形网格后,将其从球体移开几个单位(例如0.01左右).

使用样条线

另一个解决方案是根据以下内容创建spline

>球体的半径(如上计算)
> P1
>我
> P2

产生的样条曲线必须移到球体的前面.

搅拌器艺术家论坛

Blender experts也将对如何解决这个问题有很好的想法;尝试问他们.

也可以看看

http://www.mathnews.uwaterloo.ca/Issues/mn11106/DotProduct.php

http://cr4.globalspec.com/thread/27311/Urgent-Midpoint-of-Arc-formula

上一篇:python-如何根据上下文在Blender 2.63中更改运算符的标签?


下一篇:从python中的特定程序打开文件