File: TestStarPolygon.py

package info (click to toggle)
vtk9 9.5.2%2Bdfsg3-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 205,984 kB
  • sloc: cpp: 2,336,570; ansic: 327,116; python: 111,200; yacc: 4,104; java: 3,977; sh: 3,032; xml: 2,771; perl: 2,189; lex: 1,787; makefile: 181; javascript: 165; objc: 153; tcl: 59
file content (32 lines) | stat: -rw-r--r-- 1,049 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from vtk.vtkCommonCore import (
    vtkMath,
    vtkPoints
)
from vtk.vtkCommonDataModel import vtkPolygon;
from vtkmodules.test import Testing

import math

class TestStarPolygon(Testing.vtkTest):
    def test(self):
        n = 12
        t = 2.0*math.pi/n
        s = (1.0 + math.sin(t))/math.cos(t) - 1.0

        points = vtkPoints()
        for z,e in enumerate([-1.0e-6,0.0,1.0e-6]):
            for i in range(n):
                r = 25.0*(1.0 + (i%2)*s + e)
                x, y = r*math.cos(i*t), r*math.sin(i*t)
                points.InsertNextPoint([x, y, 10.0*z])

        nn = [-1,-1,-1]
        for ci in range(3):
            pts = [ci*n + i for i in range(n)]
            vtkPolygon.ComputeNormal(points, n, pts, nn)
            area = vtkPolygon.ComputeArea(points, n, pts, nn)
            print("Cell: %2d Normal: [%5.2f, %5.2f, %5.2f], Area: %g" % (ci, nn[0], nn[1], nn[2], area))
            self.assertEqual(abs(vtkMath.Norm(nn) - 1.0) < 0.0001, True)

if __name__ == "__main__":
    Testing.main([(TestStarPolygon, 'test')])