擅长:python、mysql、java
<p>您的形状很简单,但我喜欢使用<em><a href="https://numpy.org/doc/stable/reference/generated/numpy.einsum.html" rel="nofollow noreferrer">einsum</a></em>来处理具有数百个点的形状</p>
<p>你可以从中得到这个想法<code>s00</code>只是一个多边形,由一个数组表示:</p>
<pre><code>array([[ 1.5, 1.5],
[ 0.0, 10.0],
[ 10.0, 10.0],
[ 10.0, 0.0],
[ 1.5, 1.5]])
angle = 22.5
angle = np.radians(angle)
c, s = np.cos(angle), np.sin(angle)
R = np.array(((c, s), (-s, c)))
cent = np.mean(s00, axis=0)
new_cent = [10., 10.]
ch = np.einsum('ij,jk->ik', s00 - cent, R) + new_cent
</code></pre>
<p><a href="https://i.stack.imgur.com/nEilz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/nEilz.png" alt="Enter image description here"/></a></p>