[brlcad-commits] SF.net SVN: brlcad:[33018] brlcad/trunk/src/gtools
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2008-10-20 21:59:14
|
Revision: 33018 http://brlcad.svn.sourceforge.net/brlcad/?rev=33018&view=rev Author: brlcad Date: 2008-10-20 21:59:01 +0000 (Mon, 20 Oct 2008) Log Message: ----------- remove the also mostly useless solshoot test program. looks like it fires a hard-coded ray at specified geometry with debugging getting turned on/off for redblack tree testing. either way, doesn't do anything useful and has been a maintenance burden. bye. Modified Paths: -------------- brlcad/trunk/src/gtools/Makefile.am Removed Paths: ------------- brlcad/trunk/src/gtools/solshoot.c Modified: brlcad/trunk/src/gtools/Makefile.am =================================================================== --- brlcad/trunk/src/gtools/Makefile.am 2008-10-20 21:40:05 UTC (rev 33017) +++ brlcad/trunk/src/gtools/Makefile.am 2008-10-20 21:59:01 UTC (rev 33018) @@ -3,8 +3,7 @@ bin_PROGRAMS = \ g_diff \ g_lint \ - g_qa \ - solshoot + g_qa noinst_PROGRAMS = \ g_transfer @@ -23,12 +22,6 @@ g_qa_SOURCES = g_qa.c g_qa_LDADD = ${RT} -solshoot_SOURCES = solshoot.c -solshoot_LDADD = ${RT} - -testfree_SOURCES = testfree.c -testfree_LDADD = ${RT} - man_MANS = \ g_diff.1 \ g_lint.1 \ @@ -42,9 +35,8 @@ include $(top_srcdir)/misc/Makefile.defs FAST_OBJECTS = \ - $(g_lint_OBJECTS) \ $(g_diff_OBJECTS) \ - $(solshoot_OBJECTS) \ - $(testfree_OBJECTS) \ + $(g_lint_OBJECTS) \ + $(g_qa_OBJECTS) \ $(noinst_PROGRAMS) \ $(bin_PROGRAMS) Deleted: brlcad/trunk/src/gtools/solshoot.c =================================================================== --- brlcad/trunk/src/gtools/solshoot.c 2008-10-20 21:40:05 UTC (rev 33017) +++ brlcad/trunk/src/gtools/solshoot.c 2008-10-20 21:59:01 UTC (rev 33018) @@ -1,291 +0,0 @@ -/* S O L S H O O T . C - * BRL-CAD - * - * Copyright (c) 1995-2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file solshoot.c - * - */ - -#include "common.h" - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> - -#include "bu.h" -#include "vmath.h" -#include "raytrace.h" - - -#define TITLE_LEN 80 -#define ORDER_BY_NAME 0 -#define ORDER_BY_DISTANCE 1 -#define made_it() bu_log("Made it to %s:%d\n", \ - __FILE__, __LINE__); - -/* - * S O L _ N A M E _ D I S T - * - * Little pair for storing the name and distance of a solid - */ -struct sol_name_dist -{ - long magic; - char *name; - fastf_t dist; -}; -#define SOL_NAME_DIST_MAGIC 0x736c6e64 - -/* - * S O L _ C O M P _ N A M E - * - * The function to order solids alphabetically by name - */ -int sol_comp_name (void *v1, void *v2) -{ - struct sol_name_dist *s1 = v1; - struct sol_name_dist *s2 = v2; - - BU_CKMAG(s1, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - BU_CKMAG(s2, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - - return(strcmp(s1->name, s2->name)); -} - -/* - * S O L _ C O M P _ D I S T - * - * The function to order solids by distance along the ray - */ -int sol_comp_dist (void *v1, void *v2) -{ - struct sol_name_dist *s1 = v1; - struct sol_name_dist *s2 = v2; - - BU_CKMAG(s1, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - BU_CKMAG(s2, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - - if (s1->dist > s2->dist) - return (1); - else if (s1->dist == s2->dist) - return (0); - else /* (s1->dist < s2->dist) */ - return (-1); -} - -/* - * M K _ S O L I D - */ -struct sol_name_dist *mk_solid (char *name, fastf_t dist) -{ - struct sol_name_dist *sp; - - sp = (struct sol_name_dist *) - bu_malloc(sizeof(struct sol_name_dist), "solid name-and_dist"); - sp->magic = SOL_NAME_DIST_MAGIC; - sp->name = name; - sp->dist = dist; - bu_log("Created solid (%s, %g)\n", sp->name, sp->dist); - return (sp); -} - -/* - * F R E E _ S O L I D - */ -void free_solid (char *vp) -{ - struct sol_name_dist *sol = (struct sol_name_dist *) vp; - - BU_CKMAG(sol, SOL_NAME_DIST_MAGIC, "solid name-and-dist"); - - bu_log("freeing solid (%s, %g)...\n", sol->name, sol->dist); - bu_free((char *) sol, "solid name-and-dist"); -} - -/* - * P R I N T _ S O L I D - */ -void print_solid (void *vp) -{ - struct sol_name_dist *sol = vp; - - BU_CKMAG(sol, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - bu_log("solid %s at distance %g along ray\n", sol->name, sol->dist); -} - -/* R P T _ H I T - * - * Hit handler for use by rt_shootray(). - * - * Does nothing. Returns 1. - */ -static int rpt_hit (struct application *ap, struct partition *ph, struct seg *segs) -{ - struct partition *pp; - struct seg *sh; - struct seg *sp; - bu_rb_tree *solids; - struct sol_name_dist *old_sol; - struct sol_name_dist *sol; - static int (*orders[])() = { - sol_comp_name, - sol_comp_dist - }; - - bu_log("I hit it!\n"); - /* - * Initialize the solid list - */ - if ((solids = bu_rb_create("Solid list", 2, orders)) == BU_RB_TREE_NULL) - bu_exit (1, "%s: %d: bu_rb_create() bombed\n", __FILE__, __LINE__); - - solids->rbt_print = print_solid; - bu_rb_uniq_on(solids, ORDER_BY_NAME); - - /* - * Get the list of segments along this ray - * and seek to its head - */ - BU_CKMAG(ph, PT_HD_MAGIC, "partition head"); - pp = ph->pt_forw; - BU_CKMAG(pp, PT_MAGIC, "partition structure"); - for (sh = pp->pt_inseg; - *((long *) sh) != BU_LIST_HEAD_MAGIC; - sh = (struct seg *) (sh->l.forw)) - BU_CKMAG(sh, RT_SEG_MAGIC, "segment structure"); - - /* - * March down the list of segments - */ - for (sp = (struct seg *) (sh->l.forw); - sp != sh; - sp = (struct seg *) sp->l.forw) { - BU_CKMAG(sp, RT_SEG_MAGIC, "seg structure"); - bu_log("I saw solid %s at distance %g\n", - sp->seg_stp->st_name, - sp->seg_in.hit_dist); - - sol = mk_solid(sp->seg_stp->st_name, sp->seg_in.hit_dist); - if (bu_rb_insert(solids, (void *) sol) < 0) { - old_sol = (struct sol_name_dist *) bu_rb_curr(solids, ORDER_BY_NAME); - BU_CKMAG(old_sol, SOL_NAME_DIST_MAGIC, "sol_name_dist structure"); - if (sol->dist >= old_sol->dist) { - free_solid((char *) sol); - } else { - bu_rb_delete(solids, ORDER_BY_NAME); - bu_rb_insert(solids, sol); - free_solid((char *) old_sol); - } - } - } - bu_log("\n- - - Solids along the ray - - -\n"); - bu_rb_walk(solids, ORDER_BY_DISTANCE, print_solid, INORDER); - - bu_prmem("Before bu_rb_free()..."); - bu_rb_diagnose_tree(solids, ORDER_BY_NAME, INORDER); -#if 0 - bu_rb_free(solids, RB_RETAIN_DATA); -#else - bu_rb_free(solids, free_solid); -#endif - bu_prmem("After bu_rb_free()..."); - - return (1); -} - - -/* Null event handler for use by rt_shootray()'s miss callback. */ -static int -no_miss_op (struct application *ap) -{ - return (1); -} - - -/* Null event handler for use by rt_shootray()'s overlap callback. */ -static int -no_ov_op (struct application *ap, struct partition *pp, struct region *r1, struct region *r2, struct partition *hp) -{ - return (1); -} - - -int -main (int argc, char **argv) -{ - struct application ap; - char db_title[TITLE_LEN+1]; - struct rt_i *rtip; - - if (--argc < 2) { - bu_log("Usage: 'solshoot model.g obj [obj...]'\n"); - return 1; - } - - /* Read in the geometry model */ - bu_log("Database file: '%s'\n", *++argv); - bu_log("Building the directory... "); - if ((rtip = rt_dirbuild(*argv, db_title, TITLE_LEN)) == RTI_NULL) { - bu_log("Could not build directory for file '%s'\n", *argv); - return 1; - } - rtip->useair = 1; - bu_log("\nPreprocessing the geometry... "); - while (--argc > 0) { - if (rt_gettree(rtip, *++argv) == -1) - return 1; - bu_log("\nObject '%s' processed", *argv); - } - bu_log("\nPrepping the geometry... "); - rt_prep(rtip); - bu_log("\n"); - - rt_g.debug = DEBUG_MEM_FULL; - - /* Initialize the application structure */ - RT_APPLICATION_INIT(&ap); - ap.a_hit = rpt_hit; - ap.a_miss = no_miss_op; - ap.a_resource = RESOURCE_NULL; - ap.a_overlap = no_ov_op; - ap.a_onehit = 0; /* Don't stop at first partition */ - ap.a_rt_i = rtip; - ap.a_zero1 = 0; /* Sanity checks for LIBRT(3) */ - ap.a_zero2 = 0; - ap.a_purpose = "Determine which segments get reported"; - -#if 1 - VSET(ap.a_ray.r_pt, 7.0, 7.0, 0.0); - VSET(ap.a_ray.r_dir, -0.7071067812, -0.7071067812, 0.0); -#else - VSET(ap.a_ray.r_pt, 20.0, 0.0, 0.0); - VSET(ap.a_ray.r_dir, -1.0, 0.0, 0.0); -#endif - (void) rt_shootray(&ap); -} - -/* - * Local Variables: - * mode: C - * tab-width: 8 - * indent-tabs-mode: t - * c-file-style: "stroustrup" - * End: - * ex: shiftwidth=4 tabstop=8 - */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |