License Public Domain
Lines 66
Keywords
graphics (9) nodebox (8)
Included in this Library
Permissions
Owner: Theodore Test
Viewable by Everyone
Editable by All Siafoo Users
Hide
Bored? Check out the Recent Activity on Siafoo Join Siafoo Now or Learn More

Nodebox Primitives for Flow Charts Atom Feed 0

In Brief Nodebox primitive functions that extend the core set. All are original or modified implementations of primitives submitted for public use in the Nodebox forum .... more
# 's
 1from utility_geometry import *
2
3def diamond_path(arg_x,arg_y,arg_width,arg_height,draw=True):
4 mid_x = arg_x + arg_width/2.0
5 mid_y = arg_y + arg_height/2.0
6 beginpath(arg_x,mid_y)
7 lineto(mid_x,arg_y)
8 lineto(arg_x+arg_width,mid_y)
9 lineto(mid_x,arg_y+arg_height)
10 lineto(arg_x,mid_y)
11 p = endpath(draw=draw)
12
13 return p
14
15def equilateral_triangle(x0,y0,length,draw=True):
16 '''Draws an equilateral triangle.'''
17
18 x1,y1 = coordinates(x0,y0,length,0)
19 x2,y2 = coordinates(x0,y0,length,60)
20 beginpath(x0,y0)
21 lineto(x1,y1)
22 lineto(x2,y2)
23 lineto(x0,y0)
24 p = endpath(draw)
25 return p
26
27def right_triangle(x0,y0,length1,length2,draw=True):
28 '''Draws a right triangle, with the right angle at the origin'''
29
30 x1,y1 = coordinates(x0,y0,length1,0)
31 x2,y2 = coordinates(x0,y0,length2,90)
32 beginpath(x0,y0)
33 lineto(x1,y1)
34 lineto(x2,y2)
35 lineto(x0,y0)
36 p = endpath(draw)
37 return p
38
39def isoscelestriangle(x0,y0,length,angle,draw=True):
40 '''Draws an isosceles triangle defined by the length of the
41 two equal sides and the angle between them.'''
42 a = 180 - 2*angle
43 x1,y1 = coordinates(x0,y0,length,0)
44 x2,y2 = coordinates(x0,y0,length,a)
45 beginpath(x0,y0)
46 lineto(x1,y1)
47 lineto(x2,y2)
48 lineto(x0,y0)
49 p = endpath(draw)
50 return p
51
52def scalenetriangle(x0,y0,length1,length2,angle,draw=True):
53 '''Draws a scalene triange defined by the length of two sides
54 and the angle between them.'''
55 from math import radians, sin, cos,asin,degrees
56
57 a,c,angB = length1,length2,angle
58 b = (a**2+c**2 - 2.0*a*c*cos(radians(angB)))**0.5
59 angA = degrees(asin((a*sin(radians(angB)))/b))
60 angC = degrees(asin((c*sin(radians(angB)))/b))
61
62 x1,y1 = coordinates(x0,y0,a,0)
63 x2,y2 = coordinates(x0,y0,b,angC)
64
65 beginpath(x0,y0)
66 lineto(x1,y1)
67 lineto(x2,y2)
68 lineto(x0,y0)
69 p = endpath(draw)
70 return p

Nodebox primitive functions that extend the core set. All are original or modified implementations of primitives submitted for public use in the Nodebox forum .

These functions are dependent on the Nodebox environment.