2017-07-18 175 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)