【技术分享】FLAC3D模型一键旋转!
在岩土工程数值模拟中,我们经常需要调整模型方位。今天分享一个实现FLAC3D模型旋转的黑科技!同时采用Python和Fish脚本实现。
假定旋转的基点为( , ),逆时针旋转角度为theta(单位为°),二维旋转变换的数学表达式:
Fish操作代码如下:
fish define rot_pt_angle(pt, theta)
angle_radians = math.degrad * theta
loop foreach local gp gp.list
x = gp.pos.y(gp)
y = gp.pos.x(gp)
x_rotated =(x-pt(1))*math.cos(angle_radians)-(y-pt(2))*math.sin(angle_radians)+pt(1)
y_rotated =(x-pt(1))*math.sin(angle_radians)+(y-pt(2))*math.cos(angle_radians)+pt(2)
gp.pos.x(gp) = x_rotated
gp.pos.y(gp) = y_rotated
endloop
end
Python操作代码如下:
import itasca as it
import math
it.command("python-reset-state false")
def rot_pt_angle(pt, theta):
angle_radians = math.radians(theta)
for gp in it.gridpoint.list():
x = gp.pos_x()
y = gp.pos_y()
x_rotated = (x-pt[0]) * math.cos(angle_radians) - (y-pt[1]) * math.sin(angle_radians) + pt[0]
y_rotated = (x -pt[0]) * math.sin(angle_radians) + (y-pt[1]) * math.cos(angle_radians) + pt[1]
gp.set_pos_x(x_rotated)
gp.set_pos_y(y_rotated )
return 0
![]() | ![]() |