コード例 #1
0
    for x in L:
        if x in d:
            d[x] += 1
        else:
            d[x] = 1
    return d


if __name__ == "__main__":

    width = 1920
    height = 1080
    pixmult = 1
    width = pixmult * 1024
    height = pixmult * 1024
    myscreen = ovdvtk.VTKScreen(width, height)
    ovdvtk.drawOCLtext(myscreen, rev_text=ovd.version())

    w2if = vtk.vtkWindowToImageFilter()
    w2if.SetInput(myscreen.renWin)
    lwr = vtk.vtkPNGWriter()
    lwr.SetInput(w2if.GetOutput())
    #w2if.Modified()
    #lwr.SetFileName("tux1.png")

    scale = 1
    myscreen.render()
    random.seed(42)
    far = 1
    camPos = far
    zmult = 4
コード例 #2
0
ファイル: test_vtk.py プロジェクト: hanlin-w/randompolygon
    poly_text = "{0} vertices".format(N)
    t.SetText("CGAL::random_polygon_2\n" + date_text + "\n" + poly_text)
    myscreen.addActor(t)


def drawGithub(myscreen):
    gittext = ovdvtk.Text()
    gittext.SetPos((50, 50))
    gittext_text = "github.com/aewallin"
    gittext.SetText(gittext_text)
    myscreen.addActor(gittext)


if __name__ == "__main__":
    print rpg.version()
    myscreen = ovdvtk.VTKScreen(width=1024,
                                height=720)  #(width=1920, height=1080)
    drawGithub(myscreen)
    # for screenshot writing:
    w2if = vtk.vtkWindowToImageFilter()
    w2if.SetInput(myscreen.renWin)
    #lwr = vtk.vtkPNGWriter()
    #lwr.SetInput( w2if.GetOutput() )

    myscreen.render()
    camPos = 1
    zmult = 4
    # position the camera
    myscreen.camera.SetPosition(0, -camPos / float(1000), zmult * camPos)
    myscreen.camera.SetClippingRange(-(zmult + 1) * camPos,
                                     (zmult + 1) * camPos)
    myscreen.camera.SetFocalPoint(0.0, 0, 0)
コード例 #3
0
import math
import random
import os
import sys
import pickle
import gzip

if __name__ == "__main__":
    # w=2500
    # h=1500

    # w=1920
    # h=1080
    w = 1024
    h = 1024
    myscreen = ovdvtk.VTKScreen(width=w, height=h)
    ovdvtk.drawOCLtext(myscreen, rev_text=ovd.version())

    w2if = vtk.vtkWindowToImageFilter()
    w2if.SetInput(myscreen.renWin)
    lwr = vtk.vtkPNGWriter()
    lwr.SetInputConnection(w2if.GetOutputPort())
    # w2if.Modified()
    # lwr.SetFileName("tux1.png")

    scale = 1
    myscreen.render()
    random.seed(42)
    far = 1
    camPos = far
    zmult = 3
コード例 #4
0
ファイル: offset_1.py プロジェクト: zhouliang80sx/openvoronoi
import ovdvtk
import time
import vtk
import math

import offset2vtk

if __name__ == "__main__":
    # w=2500 # screen resolution for big screens
    # h=1500

    # w=1920
    # h=1080
    w = 1024
    h = 1024
    myscreen = ovdvtk.VTKScreen(width=w, height=h)  # a VTK window for drawing
    ovdvtk.drawOCLtext(
        myscreen,
        rev_text=ovd.version())  # the OpenVoronoi text, revision, and date

    scale = 1
    myscreen.render()

    far = 1
    camPos = far
    zmult = 3
    # camPos/float(1000)
    myscreen.camera.SetPosition(0, -camPos / float(1000), zmult * camPos)
    myscreen.camera.SetClippingRange(-(zmult + 1) * camPos,
                                     (zmult + 1) * camPos)
    myscreen.camera.SetFocalPoint(0.0, 0, 0)
コード例 #5
0
def circleGenerators(far, Nmax, shuffle=0):
    # POINTS ON A CIRCLE
    dalfa = float(2 * math.pi) / float(Nmax - 1)
    plist = []
    radius = 0.81234 * float(far)
    for n in range(Nmax):
        x = float(radius) * math.cos(float(n) * float(dalfa))
        y = float(radius) * math.sin(float(n) * float(dalfa))
        plist.append(ovd.Point(x, y))
    if shuffle:
        random.shuffle(plist)
    return plist


if __name__ == "__main__":
    myscreen = ovdvtk.VTKScreen()
    ovdvtk.drawOCLtext(myscreen)

    w2if = vtk.vtkWindowToImageFilter()
    w2if.SetInput(myscreen.renWin)
    lwr = vtk.vtkPNGWriter()
    lwr.SetInputConnection(w2if.GetOutputPort())
    # w2if.Modified()
    # lwr.SetFileName("tux1.png")

    scale = 1
    myscreen.render()
    random.seed(42)
    far = 1

    camPos = far
コード例 #6
0
def drawBitangents():
    myscreen = ovdvtk.VTKScreen()
    myscreen.camera.SetPosition(0.01, 0, 100)
    myscreen.camera.SetFocalPoint(0, 0, 0)
    myscreen.camera.SetClippingRange(-100, 3000)
    """
    c1 = ovd.Point(10,20)
    r1=20
    c2 = ovd.Point(6,13)
    r2=23
    """

    # external ma-pocket fails with this input:
    c1 = ovd.Point(0, -18)
    r1 = 16.7033
    c2 = ovd.Point(0, -17.2167)
    r2 = 15.9299

    drawCircle(myscreen, c1, r1, ovdvtk.red)
    drawCircle(myscreen, c2, r2, ovdvtk.green)

    # when machining c2 the maximum cut-width is 
    # w_max = | c2 - c1 | + r2 - r1

    # we are looking for the bi-tangents of the two circles, given by
    # A x + B y + C = 0
    # with the constraint A^2 + B^2 = 1
    # the line-should be a bi-tangent, so:
    # +/- r1 = A c1x + B c1y + C
    # +/- r2 = A c2x + B c2y + C
    # which in matrix form is
    #   Mc=v  
    # ( c1x c1y ) ( A ) = ( +/- r1 - C )
    # ( c2x c2y ) ( B ) = ( +/- r2 - C )
    #
    # now solve for A and B using Cramers rule
    #
    #  A = det(M_1) / det(M) =  det ( +/-r1-C   c1y ) / det(M)  =  mC + n
    #                               ( +/-r2-C   c2y )
    # and
    #  B = det(M_2) / det(M) = det ( c1x  +/-r1-C ) / det(M) = pC + q
    #                              ( c2x  +/-r2-C )
    # this can be inserted into the constraint
    # A^2 + B^2 = 1 
    # (mC + n )^2 + (pC+q)^2
    # m^2 C^2 + 2mnC + n^2 + p^2 C^2 + 2pqC + q^2 =1
    #
    # C^2 ( m^2 + p^2 ) + C 2(mn+pq) + n^2 + q^2 = 1
    #
    # +r1 +r2 case:
    #  det( r1-C c1y ) = (r1-C)c2y - (r2-C)c1y = C (c1y-c2y) + (c2y*r1 - c1y*r2)
    #     ( r2-C c2y )
    #  det( c1x r1-C ) = c1x(r2-C) - c2x(r1-C) = C ( c2x-c1x ) + (c1x*r2 - c2x*r1)
    #     ( c2x r2-C )
    lines = []
    detM = c1.x * c2.y - c2.x * c1.y
    print "detM= ", detM
    m = (c1.y - c2.y) / detM
    p = (c2.x - c1.x) / detM

    n = (c2.y * r1 - c1.y * r2) / detM
    q = (c1.x * r2 - c2.x * r1) / detM
    roots1 = quadratic_roots(m * m + p * p, 2 * (m * n + p * q), n * n + q * q - 1)
    print "roots1 ", roots1
    for r in roots1:
        lines.append(root_to_line(r, m, n, p, q))

    """
    n = ( c2.y*(-1)*r1 - c1.y*(-1)*r2 ) / detM
    q = ( c1.x*(-1)*r2 - c2.x*(-1)*r1 ) / detM
    roots2 = quadratic_roots( m*m+p*p, 2*(m*n+p*q),  n*n+q*q-1)
    print "roots2 ", roots2
    for r in roots2:
        lines.append( root_to_line(r,m,n,p,q) )
    """

    for l in lines:
        drawLine(myscreen, l, ovdvtk.yellow)

    # now figure out the tangent points
    # this is the point on the tangent closest to the center.
    # Ax + By + C = 0
    # (xc-x^2) + (yc-y^2) = r^2
    #
    # from C, go a distance r along the normal to the line.
    p1 = c1 - r1 * ovd.Point(lines[0].a, lines[0].b)
    p2 = c1 - r1 * ovd.Point(lines[1].a, lines[1].b)
    drawCircle(myscreen, p1, 0.5, ovdvtk.pink)
    drawCircle(myscreen, p2, 0.5, ovdvtk.pink)

    p3 = c2 - r2 * ovd.Point(lines[0].a, lines[0].b)
    p4 = c2 - r2 * ovd.Point(lines[1].a, lines[1].b)
    drawCircle(myscreen, p3, 0.5, ovdvtk.pink)
    drawCircle(myscreen, p4, 0.5, ovdvtk.pink)

    # drawLine( myscreen, l2, ovdvtk.orange )
    # print roots

    myscreen.render()
    myscreen.iren.Start()
コード例 #7
0
def drawArcPredicate2():
    myscreen = ovdvtk.VTKScreen()
    myscreen.camera.SetPosition(0.01, 0, 100)
    myscreen.camera.SetFocalPoint(0, 0, 0)
    myscreen.camera.SetClippingRange(-100, 3000)

    c1 = ovd.Point(0, 0)
    r1 = 20

    alfa1 = (float(23) / float(360)) * 2 * math.pi
    alfa2 = (float(123) / float(360)) * 2 * math.pi

    #alfa2, alfa1 = alfa1, alfa2 # swap

    alfa1_dir = ovd.Point(math.cos(alfa1), math.sin(alfa1))
    alfa2_dir = ovd.Point(math.cos(alfa2), math.sin(alfa2))
    p1 = c1 + r1 * alfa1_dir
    p2 = c1 + r1 * alfa2_dir
    cw = False

    drawVertex(myscreen, c1, ovdvtk.orange, rad=1)
    fa1 = ovdvtk.FollowerText(text="c",
                              color=ovdvtk.orange,
                              center=(c1.x + 1, c1.y, 0),
                              scale=1)
    myscreen.addActor(fa1)

    drawVertex(myscreen, p1, ovdvtk.green, rad=1)
    fa2 = ovdvtk.FollowerText(text="p1",
                              color=ovdvtk.green,
                              center=(p1.x + 1, p1.y, 0),
                              scale=1)
    myscreen.addActor(fa2)

    drawVertex(myscreen, p2, ovdvtk.red, rad=1)
    fa3 = ovdvtk.FollowerText(text="p2",
                              color=ovdvtk.red,
                              center=(p2.x + 1, p2.y, 0),
                              scale=1)
    myscreen.addActor(fa3)

    #drawArc(myscreen, p1, p2, c1, True, ovdvtk.yellow)
    #ovdvtk.drawArc(myscreen, p1, p2, (p1-c1).norm(), c1, True, ovdvtk.yellow, da=0.1)
    ovdvtk.drawArc(myscreen,
                   p1,
                   p2, (p1 - c1).norm(),
                   c1,
                   cw,
                   ovdvtk.orange,
                   da=0.1)

    Nmax = 5000
    for n in range(Nmax):
        p = 100 * ovd.Point(random.random() - 0.5, random.random() - 0.5)

        apex = apex_point(p1, p2, c1, cw, p)
        linecolor = ovdvtk.pink
        if arc_in_region(p1, p2, c1, cw, p):
            linecolor = ovdvtk.lgreen

        drawLine(myscreen, p, apex, linecolor)

    myscreen.render()
    myscreen.iren.Start()