2017-07-18 130 views
1

如何從已知的軸座標和峯半徑創建橢圓形?如何創建橢圓形幾何形狀

從下面圖片:

Elips

點A和點B是知道

R是fresnelZone計算(米)的結果。

點x的重心LineString的AB

我也讀: thisthis 但我不知道如何實現它。

回答

2

一個可以進行例如爲:

#!/usr/bin/env python 
import math 
from shapely.geometry import Point 
from shapely.affinity import scale, rotate 

#input parameters 
A = Point(1, 1) 
B = Point(4, 5) 
R = 1 

d = A.distance(B) 

#first, rotate B to B' around A so that |AB'| = |AB| and B'.y = A.y 
#and then take S as midpoint of AB' 
S = Point(A.x + d/2, A.y) 

#alpha represents the angle of this rotation 
alpha = math.atan2(B.y - A.y, B.x - A.x) 

#create a circle with center at S passing through A and B' 
C = S.buffer(d/2) 

#rescale this circle in y-direction so that the corresponding 
#axis is R units long 
C = scale(C, 1, R/(d/2)) 

#rotate the ellipse obtained in previous step around A into the 
#original position (positive angles represent counter-clockwise rotation) 
C = rotate(C, alpha, origin = A, use_radians = True) 

for x,y in C.exterior.coords: 
    print(x, y)