GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
RESHOOT(1) BRL-CAD RESHOOT(1)

reshoot - re-shoot rays and compare results

reshoot model.g objects... < raylist

This program is designed to shoot a set of rays and compare the results with previous results. The program exits with a non-zero status if any rays are different from the previous run, and a 0 status if no differences were found.

Typically, an application (probably other than reshoot) is run with the RT_G_DEBUG flag DEBUG_ALLHITS set. This will cause librt to log all calls to the application hit routine to the standard error. The logged output can be processed by an awk program to produce input to reshoot. Consider the file p.awk with the following contents:

/Pnt/ { START=index($0,"(") + 1
       STR=substr($0, START, index($0,")") - START)
       gsub(  ", "  , "," , STR)
       printf "Pnt=%s\n",STR
       }
/Dir/ { START=index($0,"(") + 1
       STR=substr($0, START, index($0,")") - START)
       gsub(  ", "  , "," , STR)
       printf "Dir=%s\n",STR
       }
/PT/  { PIN=$3; POUT=$5 }
/InHIT/ { INHIT=$2 }
/OutHIT/ { OUTHIT=$2 }
/Region/ { printf "	region=%s in=%s in%s out=%s out%s\n",
	$2,PIN,INHIT,POUT,OUTHIT
	}

Given this awk program The log file from the application can be processed as follows:

awk -f p.awk < logfile > shotlist

to produce input for reshoot. An example of the input file format for reshoot is:

Pnt=0,0,1
Dir=0,0,-1
	region=r1.r in=p1.s indist=10016.8 out=p2.s outdist=10017.8
	region=r2.r in=p3.s indist=10018.8 out=p4.s outdist=10019.8
	... (arbitrary many region lines)
Pnt=0,0,10
Dir=0,0,-1
	region=r1.r in=p1.s indist=10016.8 out=p2.s outdist=10017.8
	region=r2.r in=p3.s indist=10018.8 out=p4.s outdist=10019.8
	... (arbitrary many region lines)

There can be an arbitrary number of rays specified in the file. There must not be whitespace between the values of Pnt and between the values of Dir; it is best to comma-separate the three coordinate values. The keywords "Pnt" and "Dir" must occur at the beginning of a line. There can be an arbitrary number of regions along the ray path. Each region must be described on a single line. A new ray is started by a "Pnt" value. Then reshoot can be run as follows:

reshoot geom.g obj ... < shotlist

Differences are reported for each ray as they are found:

Ray Pt 0,0,1 Dir 0,0,-1 inhit mismatch 17.8177 16.8 outhit mismatch 24.7685 23.8 region name mismatch /oops.r sb r1.r in primitive name mismatch p8.s sb p1.s

The floating point values logged when the DEBUG_ALLHITS flag is set in RT_G_DEBUG are printed with a %g format. This causes some truncation of precision. This is accounted for by reshoot by re-formatting the numbers computed into ascii and re-parsing them back in. This causes the same amount of precision loss as the original values have undergone. However, small actual differences are also overlooked as a result.

BRL-CAD Team

This software is Copyright (c) 2006-2019 United States Government as represented by the U.S. Army Research Laboratory.

Reports of bugs or problems should be submitted via electronic mail to devs@brlcad.org
06/07/2022 BRL-CAD

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.