LoginSignup
1
0

More than 5 years have passed since last update.

geometry > line | Polygon > 平面の頂点からnormalベクターを計算する

Posted at
動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04.4 LTS desktop amd64
TensorFlow v1.7.0
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6
gnustep-gui-runtime v0.24.0-3.1
PyMieScatt v1.7.0

http://geomalgorithms.com/a05-_intersect-1.html
Line, Polygonのintersectionの式ではPolygonのnormalベクターを使う。

Polygonの座標だけが与えられた場合、normalベクターの計算は下記に紹介されている。
http://kitchingroup.cheme.cmu.edu/blog/2015/01/18/Equation-of-a-plane-through-three-points/

試してみた。

test_plane_eq_180430.ipynb
import numpy as np

DIST_VAL = 7
p1 = np.array([DIST_VAL, 0, 0])
p2 = np.array([0, DIST_VAL, 0])
p3 = np.array([DIST_VAL, DIST_VAL, DIST_VAL])

v1 = p3 - p1
v2 = p2 - p1
print(v1)
print(v2)
cp = np.cross(v1, v2)
a, b, c = cp

print(a,b,c)

3D Vector Plotterで確認。
https://academo.org/demos/3d-vector-plotter/

qiita.png

normalベクターになっているようだ。

内向き、外向き、どちらのnormalベクターになるかは、頂点の取り方に依存する。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0