VTK非结构化网格:如何在弧点周围绘制环形圈构建圆柱弯管
3D圆柱弯管构建:弧线上环形截面的方向校正
已完成的基础步骤
- 基于3D空间中两个对角点,计算对应正方形的顶点,选取其中一个顶点作为圆心,绘制连接两个对角点的弧线
- 弧线绘制核心代码:
def draw_square_from_diagonal_points(point1, point2): # 提取两个对角点的坐标 x1, y1,z1 = point1 x2, y2,z2 = point2 # 计算对角线中点 mx = (x1 + x2) / 2 my = (y1 + y2) / 2 # 计算点1到中点的差分向量 dx = x1 - mx dy = y1 - my # 求解正方形的第四个顶点 bx = mx + dy by = my - dx # 定义正方形的四个顶点 pointA = (x1, y1) pointB = (bx, by) pointC = (x2, y2) pointD = (mx - dy, my + dx) # 与pointB相对的第四个顶点 return pointD
import math def draw_arc(radius , center,num_points=16,circle_radius=1, cross_sections_radius = 0.5, circle_points=8): radian_angle = 2 * math.pi / num_points arc_points = [] circle_pts = [] for i in range(num_points): if i == num_points/4 + 1: break cal_angle = i * radian_angle xx = center[0] + radius * math.cos(cal_angle) yy = center[1] + radius * math.sin(cal_angle) zz = center[2] arc_points.append([xx,yy,zz]) return arc_points
(弧线绘制逻辑:通过对角点确定正方形顶点作为圆心,生成连接两点的90度弧线)
核心需求
需要在弧线上的每个点周围绘制环形截面,这些环形点的方向必须随弧线的弯曲角度同步调整,最终拼接成平滑的圆柱弯管结构:弧线为中心轴线,每个环形截面始终垂直于轴线的切线方向,相邻截面的对应点可连接成连续的弯管壁。
现有尝试的问题
已编写代码绘制弧点周围的环形点,但生成的环形方向固定,未随弧线弯曲调整,无法满足弯管拼接要求,代码如下:
import math def add_spherical_points(center, radius): phi_angle = math.pi / 6 # 60度角 circular_points = [] newpts=[] for i in range(12): delta_angle = 2 * math.pi * i / 12 x = center[0] + radius * math.sin(phi_angle) * math.cos(delta_angle) y = center[1] + radius * math.sin(phi_angle) * math.sin(delta_angle) z = center[2] + radius * math.cos(phi_angle) circular_points.append([x,y,z]) return circular_points
(现有效果:所有环形点的朝向一致,未随弧线的切线方向改变,导致无法形成连续的弯管壁)
内容的提问来源于stack exchange,提问作者Ans shakeel
相关产品推荐
相关产品推荐

