File: TestStarPolygon.py

package info (click to toggle)
vtk9 9.3.0%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 267,116 kB
  • sloc: cpp: 2,195,914; ansic: 285,452; python: 104,858; sh: 4,061; yacc: 4,035; java: 3,977; xml: 2,771; perl: 2,189; lex: 1,762; objc: 153; makefile: 150; javascript: 90; 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')])