|
Usage: pol_recip [options] [input_file] Read a file in OFF format and make a polar reciprocal from the face planes. If input_file is not given the program reads from standard input. Options -h,--help this help message (run 'off_util -H help' for general help) --version version information -c <cent> reciprocation centre (default: C) X,Y,Z - centre with these coordinates C - vertex centroid, M - mid-sphere (approximate) R - circumcentre (avg) e - edge balanced, E - edge balanced with inversion v - vert/face balanced, V - vert/face balanced with inversion a - v/f/e balanced A - v/f/e balanced with inversion -C <init> initial value for a centre calculation, in form 'X,Y,Z', or C to use centroid (default), M to calculate approx mid-sphere -r <rad> reciprocation radius (default: calculated) radius value - use this value as the radius v - nearest vertex distance, V - furthest vertex distance e - nearest edge distance, E - furthest edge distance f - nearest face distance, F - furthest face distance or a comma separated list of vertex indices (starting from 0) and the distance is to the space containing those vertices -R <rad> initial value for a radius calculation (default: calculated) -i transform dual by reflecting in centre point -I <dist> maximum distance to project any normal or infinite dual vertex (default: 1e+15), if 0 then use actual distances and delete infinite points -x exclude extra elements added to duals with ideal vertices -n <itrs> maximum number of iterations (default: 10000) -l <lim> minimum distance change to terminate, as negative exponent (default: 12 giving 1e-12) -a append dual to original polyhedron -o <file> write output to file (default: write to standard output)
Make the dual of an octahedron, a cube.
pol_recip oct | antiview
pol_recip -a oct | antiview
pol_recip -a -r f cubo | off_color -r A0.4,f | antiview pol_recip -a -r F cubo | off_color -r A0.4,f | antiview
pol_recip -a -c 0,0,0.2 -r 2,3,5 pyr5 | off_color -r A0.4,f | antiview pol_recip -a -c 0,0,-0.4 -r 2,3,5 pyr5 | off_color -r A0.4,f | antiview
polygon ant -s antih 4 | canonical | pol_recip -a | antiview polygon ant -s antih 4 | canonical | pol_recip -a -c M -n 10000 | antiview
polygon -l 1.5 pyr 7 | off_color -f blue | pol_recip -c M -n 50000 -a | antiview polygon -l 1.5 pyr 7 | off_color -f blue | pol_recip -C 0,0,-1 -c M -n 50000 -a | antiview polygon -l 1.5 pyr 7 | off_color -f blue | pol_recip -c e -n 50000 -a | antiview
pol_recip -c 0,0,0.05 -r 0,1 -a pyr3 | antiview -R -90,0,0 pol_recip -c 0,0,-0.05 -r 0,1 -a pyr3 | antiview -R -90,0,0 pol_recip -c 0,0,0.00 -r 0,1 -a pyr3 | antiview -R -90,0,0 pol_recip -c 0,0,0.00 -x -r 0,1 -a pyr3 | antiview -R -90,0,0
Some polyhedra have faces passing through their natural centre. This causes a problem when making a dual because the vertex which is dual to this face should be infinitely far away. pol_recip allows these vertices to be included by placing them at a specified (probably very large) distance normal to the face. Any programs dealing with these distant vertices (e.g. povray) can interpret these distant vertices accordingly.
The default reciprocation centre and radius are found by the following algorithm. It aims to find a reciprocation sphere that is balanced, in the sense that the polyhedron and its dual have the same relationship with the sphere.
centre = centroid of vertices of base polyhedron radius = average distance from centre to edges LOOP: dual = polar reciprocal of base, using centre and radius invert dual in centre point edge_centroid = centroid of the nearest points to the centre on the base's edges and duals edges radius_sum_base = sum of distances from the centre to the nearest point to the centre on the base's edges radius_sum_dual = sum of distances from the centre to the nearest point to the centre on the dual's edges if loop count is even: centre = 0.9*centre + 0.1*edge_centroid if loop count is odd: radius = radius * sqrt(rad_sum_g/rad_sum_d) finish loop if change in centre and radius are small enough
The aim is that this will be a similar reciprocation method. That is to say
The default method above tends to reciprocate in the midsphere, if it exists.
The other available balanced reciprocation methods use the centroid of combined face near-points and vertex offsets, or the centroid of the near-points of all three elements combined. For all three cases the dual may be inverted in the reciprocation centre before the centroid calculation.
-r e may select a sphere suitable for self-duality.
-r v and -r V may always give the same results.
Up:
Programs and Documentation
Next:
canonical - canonicalize a polyhedon