vhclmaps-0.7.1-0.7.2.diffs Vectaport Inc. May 3rd 1999 This file, when applied with patch, transforms a vhclmaps source tree with all the changes made to Vectaport's copy between 0.7.1 and 0.7.2. See the diff to the vhclmaps-0.7/CHANGES file below for details of what's new. To apply this patch, cd to the top directory of the vhclmaps-0.7 source tree (the directory with "config" and "src" sub-directories), and pipe the file to patch, i.e.: patch - #include - #include - #include - #include - #include - #include - #include - #include - - /*===========================================================================*/ - - #ifdef DLG_FREE /* if not already defined in MapServ */ - - Load100KDLGFCFunc::Load100KDLGFCFunc(ComTerp* comterp) : ComFunc(comterp) { - } - - void Load100KDLGFCFunc::execute() { - ComValue dbpath = stack_arg(0); - ComValue libname = stack_arg(1); - ComValue covname = stack_arg(2); - ComValue fcname = stack_arg(3); - reset_stack(); - ComValue result; - - Creator::instance(new DlgCreator()); - const char* dbdir = dbpath.string_ptr(); - DlgDatabase* db = new DlgDatabase(dbdir); - DlgLibrary* lib = db->library(libname.string_ptr()); - DlgDbComp* dbcomp = new DlgDbComp(db); - MapShowCmd* showcmd = new MapShowCmd(); - showcmd->SetUseEditor(false); - showcmd->SetLibName(libname.string_ptr()); - showcmd->SetCovName(covname.string_ptr()); - showcmd->SetFClassName(fcname.string_ptr()); - dbcomp->Interpret(showcmd); - - DlgLibComp* libcomp = (DlgLibComp*)dbcomp->FindLibComp(lib); - DlgCoverage* cov = lib->coverage(covname.string_ptr()); - DlgCovComp* covcomp = (DlgCovComp*)libcomp->FindCovComp(cov); - DlgFeatureClass* fclass = cov->feature_class(fcname.string_ptr()); - DlgFClassComp* fccomp = (DlgFClassComp*)covcomp->FindFClassComp(fclass); - result.type(AttributeValue::ObjectType); - result.obj_ref() = fccomp; - push_stack(result); - } - - #endif --- 0 ---- Index: DlgUnidraw/dlgfunc.h diff -c DlgUnidraw/dlgfunc.h:1.1 DlgUnidraw/dlgfunc.h:removed *** DlgUnidraw/dlgfunc.h:1.1 Wed Mar 24 11:48:34 1999 --- src/DlgUnidraw/dlgfunc.h Mon May 3 13:20:46 1999 *************** *** 1,39 **** - /* - * Copyright (c) 1997,1998 Vectaport Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of the copyright holders not be used in - * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The copyright holders make - * no representations about the suitability of this software for any purpose. - * It is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ - - #ifndef dlgfunc_h - #define dlgfunc_h - - #include - - #ifdef DLG_FREE /* if not already defined in MapServ */ - - class Load100KDLGFCFunc : public ComFunc { - public: - Load100KDLGFCFunc(ComTerp*); - virtual void execute(); - virtual const char* docstring() { - return "fclass=%s(dbpathstr libnamestr covnamestr fcnamestr) -- import a 100K DLG format feature class"; } - }; - #endif - #endif --- 0 ---- Index: Los/Imakefile diff -c Los/Imakefile:1.1 Los/Imakefile:1.2 *** Los/Imakefile:1.1 Wed Mar 24 11:48:45 1999 --- src/Los/Imakefile Thu Apr 22 16:49:14 1999 *************** *** 10,16 **** MakeLibrary($(LIB),$(VERSION)) ! #define Obj(file) MakeObjectFromCSrcFlags(file,-DXVT_OS_ISUNIX=TRUE -DXVT_OS=1 -DXVT_OS_WIN=0 -DPROTO=1 -DXVT_CC_PROTO=1) Obj(build_pr) Obj(c3spline) --- 10,16 ---- MakeLibrary($(LIB),$(VERSION)) ! #define Obj(file) MakeObjectFromCSrcFlags(file,-DXVT_OS_ISUNIX=TRUE -DXVT_OS=1 -DXVT_OS_WIN=0 -DPROTO=1 -DXVT_CC_PROTO=1 -I$(XINCDIR)) Obj(build_pr) Obj(c3spline) Index: UtmUnidraw/utmclasses.h diff -c UtmUnidraw/utmclasses.h:1.1 UtmUnidraw/utmclasses.h:1.2 *** UtmUnidraw/utmclasses.h:1.1 Wed Mar 24 11:48:08 1999 --- src/UtmUnidraw/utmclasses.h Tue Apr 27 14:24:33 1999 *************** *** 37,41 **** --- 37,42 ---- #define UTM_OPEN_CMD 9505 #define UTMELEV_TOOL 9506 #define UTMELEVGRID_TOOL 9507 + #define UTMDIST_TOOL 9508 #endif Index: UtmUnidraw/utmcmds.c diff -c UtmUnidraw/utmcmds.c:1.1 UtmUnidraw/utmcmds.c:1.2 *** UtmUnidraw/utmcmds.c:1.1 Wed Mar 24 11:48:08 1999 --- src/UtmUnidraw/utmcmds.c Tue Apr 27 14:24:33 1999 *************** *** 58,63 **** --- 58,65 ---- #include #include + #include + #include #include #include *************** *** 322,327 **** --- 324,433 ---- /****************************************************************************/ + ClassId UtmDistTool::GetClassId () { return UTMDIST_TOOL; } + + boolean UtmDistTool::IsA (ClassId id) { + return UTMDIST_TOOL == id || GraphicCompTool::IsA(id); + } + + Tool* UtmDistTool::Copy () { return new UtmDistTool(CopyControlInfo()); } + + UtmDistTool::UtmDistTool(ControlInfo* info) + :GraphicCompTool() + { + if (info) + SetControlInfo(info); + ArrowLine* ml = new ArrowLine( + 0, 0, unit, unit, true, false, 2., stdgraphic + ); + Catalog* catalog = unidraw->GetCatalog(); + PSBrush* br = catalog->FindBrush(0xffff, 2); + ml->SetBrush(br); + PSColor* col = catalog->FindColor("Red"); + ml->SetColors(col, col); + ArrowLineOvComp* mlComp = new ArrowLineOvComp(ml); + Init(mlComp); + } + + Command* UtmDistTool::InterpretManipulator (Manipulator* m) { + DragManip* dm = (DragManip*) m; + MapEditor* ed = (MapEditor*) dm->GetViewer()->GetEditor(); + Transformer* rel = dm->GetTransformer(); + MacroCmd* cmd = new MacroCmd(ed); + Transformer* trans = ed->GetMapViewState()->deftrans(); + + RubberLine* rl = (RubberLine*) dm->GetRubberband(); + + Coord px0, py0, px1, py1; + int pt; + rl->GetCurrent(px0, py0, px1, py1); + + if (rel != nil) { + rel = new Transformer(rel); + rel->Invert(); + } + + if (px0 != px1 || py0 != py1) { + float fpx, fpy, ffx, ffy; + rel->transform(px0, py0, fpx, fpy); + rel->transform(px1, py1, ffx, ffy); + printf("rl: %d %d %d %d; trl: %f %f %f %f\n", + px0, py0, px1, py1, fpx, fpy, ffx, ffy); + float tpx, tpy, tfx, tfy; + if (trans) { + trans->inverse_transform(fpx, fpy, tpx, tpy); + trans->inverse_transform(ffx, ffy, tfx, tfy); + } else { + tpx=fpx; + tpy=fpy; + tfx=ffx; + tfy=ffy; + } + printf("UTM: P1: %fE %fN; P2: %fE %fN\n", tpx, tpy, tfx, tfy); + + if (ed->GetCameraComp()) { + Viewer* viewer = ed->GetViewer(); + OverlayView* view = + ((OverlayComp*)ed->GetCameraComp())->FindView(ed->GetViewer()); + ArrowLineOvComp* comp = (ArrowLineOvComp*)ed->GetCameraComp(); + ArrowLine* aline = comp->GetArrowLine(); + aline->SetTransformer(rel); + // aline->SetOriginal(px0, py0, px1, py1); + + ArrowLine* alinev = (ArrowLine*)(view->GetGraphic()); + viewer->GetDamage()->Incur(alinev); + alinev->SetTransformer(rel); + alinev->SetOriginal(px0, py0, px1, py1); + viewer->GetDamage()->Incur(alinev); + unidraw->Update(); + } + else { + Catalog* catalog = unidraw->GetCatalog(); + ArrowLine* aline = new ArrowLine(px0, py0, px1, py1, false, true, + 1.25, stdgraphic); + PSBrush* br = catalog->FindBrush(0xffff, 2); + aline->SetBrush(br); + PSColor* col = catalog->FindColor("Red"); + aline->SetColors(col, col); + aline->SetTransformer(rel); + ArrowLineOvComp* comp = new ArrowLineOvComp(aline); + Command* pcmd = new PasteCmd(ed, new Clipboard(comp)); + pcmd->Execute(); + ed->GetSelection()->Clear(); + ed->SetCameraComp(comp); + } + char buf1[BUFSIZ]; + sprintf(buf1, "UTM distance: %.3f km", sqrt((tpx-tfx)*(tpx-tfx) + (tpy-tfy)*(tpy-tfy))/1000); + char buf2[BUFSIZ]; + sprintf(buf2, "UTM: P1: %.0fE %.0fN; P2: %.0fE %.0fN", tpx, tpy, tfx, tfy); + + GAcknowledgeDialog::post(ed->GetWindow(), buf1, buf2, "UTM Distance (m)"); + } + return cmd; + } + + /****************************************************************************/ + #ifdef HAVE_ACE UtmLosImportByServCmd::UtmLosImportByServCmd (ControlInfo* c) : UtmImportByServCmd(c) { } *************** *** 568,574 **** for (int j=0; jget_handle()); --- 674,680 ---- for (int j=0; jget_handle()); Index: UtmUnidraw/utmcmds.h diff -c UtmUnidraw/utmcmds.h:1.1 UtmUnidraw/utmcmds.h:1.2 *** UtmUnidraw/utmcmds.h:1.1 Wed Mar 24 11:48:08 1999 --- src/UtmUnidraw/utmcmds.h Tue Apr 27 14:24:33 1999 *************** *** 95,100 **** --- 95,112 ---- protected: }; + class UtmDistTool : public GraphicCompTool { + public: + UtmDistTool(ControlInfo* = nil); + + virtual Command* InterpretManipulator(Manipulator*); + + virtual Tool* Copy(); + virtual ClassId GetClassId(); + virtual boolean IsA(ClassId); + protected: + }; + #define LOS_2VALUED 0 #define LOS_4VALUED 1 #define LOS_VIEWSHED 0 Index: UtmUnidraw/utmeditor.c diff -c UtmUnidraw/utmeditor.c:1.5 UtmUnidraw/utmeditor.c:1.6 *** UtmUnidraw/utmeditor.c:1.5 Tue Apr 13 13:56:45 1999 --- src/UtmUnidraw/utmeditor.c Thu Apr 22 16:49:11 1999 *************** *** 128,133 **** --- 128,134 ---- comterp->add_command("paste", new PasteFunc(comterp, this)); comterp->add_command("readonly", new ReadOnlyFunc(comterp, this)); comterp->add_command("mapviewstate", new MapViewStateFunc(comterp, this)); + comterp->add_command("utmtoscreen", new UtmToScreenFunc(comterp, this)); MapservHandler::AddCommands(comterp); ComEditor::AddCommands(comterp); Index: UtmUnidraw/utmfunc.c diff -c UtmUnidraw/utmfunc.c:1.1 UtmUnidraw/utmfunc.c:1.3 *** UtmUnidraw/utmfunc.c:1.1 Wed Mar 24 11:48:09 1999 --- src/UtmUnidraw/utmfunc.c Tue Apr 27 14:24:33 1999 *************** *** 25,30 **** --- 25,31 ---- #include #include #include + #include #include #include #include *************** *** 173,191 **** dy = 1; } float old_heading = UtmFunc::heading(dx, dy); ! float new_heading = heading.float_val(); MacroCmd* mcmd = new MacroCmd(_ed); if (old_heading != new_heading) { ! float rotation = old_heading-new_heading; ! RotateCmd* cmd = new RotateCmd(_ed, rotation); ! mcmd->Append(cmd); } - float cx, cy; - vhclpict->GetGraphic()->GetCenter(cx, cy); MoveCmd* cmd = new MoveCmd(_ed, xloc-cx, yloc-cy); mcmd->Append(cmd); execute_log(mcmd); // recenter view on vehicle if it moves out of view OverlayViewer* viewer = (OverlayViewer*)_ed->GetViewer(); Canvas* canvas = viewer->GetCanvas(); --- 174,195 ---- dy = 1; } float old_heading = UtmFunc::heading(dx, dy); ! float cx, cy; ! vhclpict->GetGraphic()->GetCenter(cx, cy); ! float new_heading = heading.is_known() ! ? heading.float_val() ! : UtmFunc::heading(xloc-cx, yloc-cy); MacroCmd* mcmd = new MacroCmd(_ed); if (old_heading != new_heading) { ! float rotation = old_heading-new_heading; ! RotateCmd* cmd = new RotateCmd(_ed, rotation); ! mcmd->Append(cmd); } MoveCmd* cmd = new MoveCmd(_ed, xloc-cx, yloc-cy); mcmd->Append(cmd); execute_log(mcmd); + #if 0 // recenter view on vehicle if it moves out of view OverlayViewer* viewer = (OverlayViewer*)_ed->GetViewer(); Canvas* canvas = viewer->GetCanvas(); *************** *** 214,219 **** --- 218,224 ---- PanCmd* pancmd = new PanCmd(_ed, px, py); execute_log(pancmd); } + #endif } push_stack(compval); } else *************** *** 303,307 **** --- 308,346 ---- mapviewstate->settrans(new Transformer(af[0], af[1], af[2], af[3], af[4], af[5])); mapviewstate->normtrans(normtransv.boolean_val()); } + } + + /*****************************************************************************/ + + UtmToScreenFunc::UtmToScreenFunc(ComTerp* comterp, Editor* ed) + : UtmFunc(comterp, ed) { + } + + void UtmToScreenFunc::execute() { + + ComValue utmcoordv(stack_arg(0)); + static int zonesym = symbol_add("zone"); + ComValue zonev(stack_key(zonesym)); + static int nsym = symbol_add("n"); + ComValue nflagv(stack_key(nsym)); + static int esym = symbol_add("e"); + ComValue eflagv(stack_key(esym)); + reset_stack(); + + MapEditor* ed = (MapEditor*)_ed; + MapViewer* viewer = (MapViewer*)ed->GetViewer(); + float fdummy; + int idummy; + int screencoord; + if (nflagv.is_true() || eflagv.is_false()) + viewer->UtmToScreen(utmcoordv.float_val(), fdummy, zonev.int_val(), + screencoord, idummy); + else + viewer->UtmToScreen(fdummy, utmcoordv.float_val(), zonev.int_val(), + idummy, screencoord); + + ComValue screencoordv(screencoord); + push_stack(screencoordv); + } Index: UtmUnidraw/utmfunc.h diff -c UtmUnidraw/utmfunc.h:1.1 UtmUnidraw/utmfunc.h:1.2 *** UtmUnidraw/utmfunc.h:1.1 Wed Mar 24 11:48:09 1999 --- src/UtmUnidraw/utmfunc.h Thu Apr 22 16:49:11 1999 *************** *** 42,47 **** --- 42,49 ---- public: VhclViewFunc(ComTerp*, Editor*); virtual void execute(); + virtual const char* docstring() { + return "compview=%s(:name namestr :gr drawtoolstr) -- create a vehicle graphic with a drawtool document"; } protected: int _gr_symid; *************** *** 53,58 **** --- 55,62 ---- public: VhclMoveToFunc(ComTerp*, Editor*); virtual void execute(); + virtual const char* docstring() { + return "%s(compview :heading degrees :xdir dirflt :ydir dirflt) -- move vehicle graphic to x,y location with specified heading"; } protected: int _heading_symid; *************** *** 62,67 **** --- 66,73 ---- public: RteViewFunc(ComTerp*, Editor*); virtual void execute(); + virtual const char* docstring() { + return "compview=%s(waypts :name namestr) -- create route graphic"; } protected: int _name_symid; *************** *** 72,77 **** --- 78,95 ---- public: MapViewStateFunc(ComTerp*, Editor*); virtual void execute(); + virtual const char* docstring() { + return "%s(:deftrans affine :normtrans affine) -- setup up transforms applied to map features"; } + + + }; + + class UtmToScreenFunc : public UtmFunc { + public: + UtmToScreenFunc(ComTerp*, Editor* ed); + virtual void execute(); + virtual const char* docstring() { + return "screenflt=%s(utmflt :zone zoneval :n :e) -- convert from utm to screen coordinates"; } }; Index: UtmUnidraw/utmkit.c diff -c UtmUnidraw/utmkit.c:1.5 UtmUnidraw/utmkit.c:1.6 *** UtmUnidraw/utmkit.c:1.5 Fri Apr 16 15:03:53 1999 --- src/UtmUnidraw/utmkit.c Tue Apr 27 14:24:33 1999 *************** *** 146,154 **** ToolButton* camerapos; ToolButton* camerapath; #endif ! #if 0 ! ToolButton* utmposbutton; ! #endif #ifdef HAVE_ACE ToolButton* elevbutton; ToolButton* elgrbutton; --- 146,152 ---- ToolButton* camerapos; ToolButton* camerapath; #endif ! ToolButton* utmdistbutton; #ifdef HAVE_ACE ToolButton* elevbutton; ToolButton* elgrbutton; *************** *** 178,186 **** Glyph* ins = kit.label("Inspect"); Glyph* campos = kit.label("CameraPos"); Glyph* campth = kit.label("CameraPath"); ! #if 0 ! Glyph* utmpos = kit.label("UTMPos"); ! #endif Glyph* los = kit.label("LOS"); Glyph* elv = kit.label("Elev"); Glyph* elg = kit.label("ElevGrid"); --- 176,182 ---- Glyph* ins = kit.label("Inspect"); Glyph* campos = kit.label("CameraPos"); Glyph* campth = kit.label("CameraPath"); ! Glyph* utmdist = kit.label("UTMDist"); Glyph* los = kit.label("LOS"); Glyph* elv = kit.label("Elev"); Glyph* elg = kit.label("ElevGrid"); *************** *** 206,215 **** maxwidth); maxwidth = Math::max((campth->request(req), req.x_requirement().natural()), maxwidth); ! #if 0 ! maxwidth = Math::max((utmpos->request(req), req.x_requirement().natural()), maxwidth); - #endif maxwidth = Math::max((los->request(req), req.x_requirement().natural()), maxwidth); maxwidth = Math::max((elv->request(req), req.x_requirement().natural()), --- 202,209 ---- maxwidth); maxwidth = Math::max((campth->request(req), req.x_requirement().natural()), maxwidth); ! maxwidth = Math::max((utmdist->request(req), req.x_requirement().natural()), maxwidth); maxwidth = Math::max((los->request(req), req.x_requirement().natural()), maxwidth); maxwidth = Math::max((elv->request(req), req.x_requirement().natural()), *************** *** 252,263 **** layout.overlay(layout.hcenter(layout.hspace(maxwidth)), layout.hcenter(campth)), tg)); #endif ! #if 0 ! vb->append(utmposbutton = MakeTool(new UtmPosTool( ! new ControlInfo("UTMPos")), layout.overlay(layout.hcenter(layout.hspace(maxwidth)), ! layout.hcenter(utmpos)), tg)); ! #endif if (geolog_cmd) vb->append(geolog = MakeTool(new GeoLocTool(new ControlInfo("GeoLog", "L", "L"), geolog_cmd), layout.overlay(layout.hcenter(layout.hspace(maxwidth)), --- 246,255 ---- layout.overlay(layout.hcenter(layout.hspace(maxwidth)), layout.hcenter(campth)), tg)); #endif ! vb->append(utmdistbutton = MakeTool(new UtmDistTool( ! new ControlInfo("UTMDist")), layout.overlay(layout.hcenter(layout.hspace(maxwidth)), ! layout.hcenter(utmdist)), tg)); if (geolog_cmd) vb->append(geolog = MakeTool(new GeoLocTool(new ControlInfo("GeoLog", "L", "L"), geolog_cmd), layout.overlay(layout.hcenter(layout.hspace(maxwidth)), *************** *** 312,320 **** vb->append(camerapos); vb->append(camerapath); #endif ! #if 0 ! vb->append(utmposbutton); ! #endif if (geolog_cmd) vb->append(geolog); #ifdef HAVE_ACE --- 304,310 ---- vb->append(camerapos); vb->append(camerapath); #endif ! vb->append(utmdistbutton); if (geolog_cmd) vb->append(geolog); #ifdef HAVE_ACE Index: Vehicle/route.c diff -c Vehicle/route.c:1.1 Vehicle/route.c:1.2 *** Vehicle/route.c:1.1 Wed Mar 24 11:49:13 1999 --- src/Vehicle/route.c Tue Apr 27 16:48:09 1999 *************** *** 158,162 **** --- 158,164 ---- } boolean Route::finished() { + if (_curdir==0) + _vhcl->xdelta() = _vhcl->ydelta() = _vhcl->zdelta() = 0.0; return _curdir == 0; } Index: Vehicle/vehicle.c diff -c Vehicle/vehicle.c:1.1 Vehicle/vehicle.c:1.2 *** Vehicle/vehicle.c:1.1 Wed Mar 24 11:49:13 1999 --- src/Vehicle/vehicle.c Tue Apr 27 16:48:09 1999 *************** *** 35,40 **** --- 35,43 ---- xdir() = dx; ydir() = dy; zdir() = dz; + xdelta() = 0.0; + ydelta() = 0.0; + zdelta() = 0.0; _rte = nil; _tag = nil; _speed = 0; *************** *** 52,57 **** --- 55,63 ---- if (dx || dy) { xloc() += dx; yloc() += dy; + xdelta() = dx; + ydelta() = dy; + zdelta() = 0.0; growroute(); notify(); } *************** *** 62,67 **** --- 68,76 ---- xloc() += dx; yloc() += dy; zloc() += dz; + xdelta() = dx; + ydelta() = dy; + zdelta() = dz; growroute(); notify(); } *************** *** 72,77 **** --- 81,87 ---- for (int i=0; ireset(); } Index: Vehicle/vehicle.h diff -c Vehicle/vehicle.h:1.1 Vehicle/vehicle.h:1.2 *** Vehicle/vehicle.h:1.1 Wed Mar 24 11:49:13 1999 --- src/Vehicle/vehicle.h Tue Apr 27 16:48:09 1999 *************** *** 42,47 **** --- 42,50 ---- float& xdir() { return _dir[0]; } float& ydir() { return _dir[1]; } float& zdir() { return _dir[2]; } + float& xdelta() { return _delta[0]; } + float& ydelta() { return _delta[1]; } + float& zdelta() { return _delta[2]; } void move(float dx, float dy); void move(float dx, float dy, float dy); *************** *** 91,96 **** --- 94,100 ---- protected: float _loc[3]; float _dir[3]; + float _delta[3]; char* _name; Route* _rte; void* _tag; Index: VhclServ/vhclfunc.c diff -c VhclServ/vhclfunc.c:1.1 VhclServ/vhclfunc.c:1.3 *** VhclServ/vhclfunc.c:1.1 Wed Mar 24 11:49:17 1999 --- src/VhclServ/vhclfunc.c Mon May 3 12:25:00 1999 *************** *** 1,5 **** /* ! * Copyright (c) 1997-1998 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided --- 1,5 ---- /* ! * Copyright (c) 1997-1999 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided *************** *** 565,570 **** --- 565,607 ---- /*****************************************************************************/ + PrintRouteFunc::PrintRouteFunc(ComTerp* comterp) : VhclFunc(comterp) { + } + + void PrintRouteFunc::execute() { + ComValue rtesym(stack_arg(0, true)); + RouteComp* rtecomp = VhclFunc::findrte(rtesym.symbol_val()); + static int reverse_symid = symbol_add("reverse"); + boolean reverse = stack_key(reverse_symid).is_true(); + reset_stack(); + + if (!rtecomp) { + push_stack(ComValue::nullval()); + return; + } + Route* route = rtecomp->route(); + if (!route) return; + + filebuf fbuf; + if (comterp()->handler()) { + int fd = max(1, comterp()->handler()->get_handle()); + fbuf.attach(fd); + } else + fbuf.attach(fileno(stdout)); + ostream out(&fbuf); + + int n = route->npts(); + for (int i=0; ix()[reverse ? n-i-1 : i]); + out << ","; + out.form("%.2f", route->y()[reverse ? n-i-1 : i]); + out << ","; + } + return; + } + + /*****************************************************************************/ + // Set up vehicle simulation timer ObservableTime* VhclSimTimeFunc::_simtime = nil; *************** *** 584,589 **** --- 621,628 ---- ComValue abs_flag(stack_key(_abs_symid)); ComValue back_flag(stack_key(_back_symid)); ComValue reset_flag(stack_key(_reset_symid)); + static int quiet_symid = symbol_add("quiet"); + boolean quiet= stack_key(quiet_symid).is_true(); reset_stack(); if (reset_flag.is_true()) { *************** *** 605,616 **** } } ! filebuf fbuf; ! int fd = comterp()->handler() ? comterp()->handler()->get_handle() : 1; ! fbuf.attach(fd>=0 ? fd : 1); ! ostream out(&fbuf); ! out << "simtime: " << _simtime->time()->seconds() << "\n"; ! out.flush(); return; } --- 644,657 ---- } } ! if (!quiet) { ! filebuf fbuf; ! int fd = comterp()->handler() ? comterp()->handler()->get_handle() : 1; ! fbuf.attach(fd>=0 ? fd : 1); ! ostream out(&fbuf); ! out << "simtime: " << _simtime->time()->seconds() << "\n"; ! out.flush(); ! } return; } *************** *** 623,628 **** --- 664,675 ---- void VhclLocFunc::execute() { ComValue vhclsym(stack_arg(0, true)); VehicleComp* vhclcomp = VhclFunc::findvhcl(vhclsym.symbol_val()); + static int x_symid = symbol_add("x"); + static int y_symid = symbol_add("y"); + static int z_symid = symbol_add("z"); + boolean xflag = stack_key(x_symid).is_true(); + boolean yflag = stack_key(y_symid).is_true(); + boolean zflag = stack_key(z_symid).is_true(); reset_stack(); if (!vhclcomp) { *************** *** 632,643 **** Vehicle* vhcl = vhclcomp->vehicle(); ! AttributeValueList* al = new AttributeValueList(); ! al->Append(new AttributeValue(vhcl->xloc())); ! al->Append(new AttributeValue(vhcl->yloc())); ! al->Append(new AttributeValue(vhcl->zloc())); ! ComValue retval(al); ! push_stack(retval); return; } --- 679,786 ---- Vehicle* vhcl = vhclcomp->vehicle(); ! int flagcnt = xflag!=0 + yflag!=0 + zflag!=0; ! if (!flagcnt || flagcnt>=2) { ! AttributeValueList* al = new AttributeValueList(); ! if (xflag || !flagcnt) al->Append(new AttributeValue(vhcl->xloc())); ! if (yflag || !flagcnt) al->Append(new AttributeValue(vhcl->yloc())); ! if (zflag || !flagcnt) al->Append(new AttributeValue(vhcl->zloc())); ! ComValue retval(al); ! push_stack(retval); ! } else { ! float loc; ! if (xflag) loc = vhcl->xloc(); ! if (yflag) loc = vhcl->yloc(); ! if (zflag) loc = vhcl->zloc(); ! ComValue retval(loc); ! push_stack(retval); ! } ! return; ! } ! ! /*****************************************************************************/ ! ! VhclDirFunc::VhclDirFunc(ComTerp* comterp) : VhclFunc(comterp) ! { ! } ! ! void VhclDirFunc::execute() { ! ComValue vhclsym(stack_arg(0, true)); ! VehicleComp* vhclcomp = VhclFunc::findvhcl(vhclsym.symbol_val()); ! static int x_symid = symbol_add("x"); ! static int y_symid = symbol_add("y"); ! static int z_symid = symbol_add("z"); ! boolean xflag = stack_key(x_symid).is_true(); ! boolean yflag = stack_key(y_symid).is_true(); ! boolean zflag = stack_key(z_symid).is_true(); ! reset_stack(); ! ! if (!vhclcomp) { ! push_stack(ComValue::nullval()); ! return; ! } ! ! Vehicle* vhcl = vhclcomp->vehicle(); ! ! int flagcnt = xflag!=0 + yflag!=0 + zflag!=0; ! if (!flagcnt || flagcnt>=2) { ! AttributeValueList* al = new AttributeValueList(); ! if (xflag || !flagcnt) al->Append(new AttributeValue(vhcl->xdir())); ! if (yflag || !flagcnt) al->Append(new AttributeValue(vhcl->ydir())); ! if (zflag || !flagcnt) al->Append(new AttributeValue(vhcl->zdir())); ! ComValue retval(al); ! push_stack(retval); ! } else { ! float dir; ! if (xflag) dir = vhcl->xdir(); ! if (yflag) dir = vhcl->ydir(); ! if (zflag) dir = vhcl->zdir(); ! ComValue retval(dir); ! push_stack(retval); ! } ! return; ! } ! ! /*****************************************************************************/ ! ! VhclDeltaFunc::VhclDeltaFunc(ComTerp* comterp) : VhclFunc(comterp) ! { ! } ! ! void VhclDeltaFunc::execute() { ! ComValue vhclsym(stack_arg(0, true)); ! VehicleComp* vhclcomp = VhclFunc::findvhcl(vhclsym.symbol_val()); ! static int x_symid = symbol_add("x"); ! static int y_symid = symbol_add("y"); ! static int z_symid = symbol_add("z"); ! boolean xflag = stack_key(x_symid).is_true(); ! boolean yflag = stack_key(y_symid).is_true(); ! boolean zflag = stack_key(z_symid).is_true(); ! reset_stack(); ! ! if (!vhclcomp) { ! push_stack(ComValue::nullval()); ! return; ! } ! ! Vehicle* vhcl = vhclcomp->vehicle(); ! ! int flagcnt = xflag!=0 + yflag!=0 + zflag!=0; ! if (!flagcnt || flagcnt>=2) { ! AttributeValueList* al = new AttributeValueList(); ! if (xflag || !flagcnt) al->Append(new AttributeValue(vhcl->xdelta())); ! if (yflag || !flagcnt) al->Append(new AttributeValue(vhcl->ydelta())); ! if (zflag || !flagcnt) al->Append(new AttributeValue(vhcl->zdelta())); ! ComValue retval(al); ! push_stack(retval); ! } else { ! float delta; ! if (xflag) delta = vhcl->xdelta(); ! if (yflag) delta = vhcl->ydelta(); ! if (zflag) delta = vhcl->zdelta(); ! ComValue retval(delta); ! push_stack(retval); ! } return; } Index: VhclServ/vhclfunc.h diff -c VhclServ/vhclfunc.h:1.1 VhclServ/vhclfunc.h:1.3 *** VhclServ/vhclfunc.h:1.1 Wed Mar 24 11:49:17 1999 --- src/VhclServ/vhclfunc.h Mon May 3 12:25:00 1999 *************** *** 1,5 **** /* ! * Copyright (c) 1997-1998 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided --- 1,5 ---- /* ! * Copyright (c) 1997-1999 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided *************** *** 179,184 **** --- 179,192 ---- return "%s(rte meters) -- move current position of route forward by meters"; } }; + class PrintRouteFunc : public VhclFunc { + public: + PrintRouteFunc(ComTerp*); + virtual void execute(); + virtual const char* docstring() { + return "%s(rte :reverse) -- print route waypoints"; } + }; + class VhclSimTimeFunc : public VhclFunc { public: VhclSimTimeFunc(ComTerp*); *************** *** 202,208 **** VhclLocFunc(ComTerp*); virtual void execute(); virtual const char* docstring() { ! return "%s(vhcl) -- print vehicle position"; } }; class SimRouteFunc : public VhclFunc { --- 210,232 ---- VhclLocFunc(ComTerp*); virtual void execute(); virtual const char* docstring() { ! return "%s(vhcl :x :y :z) -- return vehicle position"; } ! }; ! ! class VhclDirFunc : public VhclFunc { ! public: ! VhclDirFunc(ComTerp*); ! virtual void execute(); ! virtual const char* docstring() { ! return "%s(vhcl :x :y :z) -- return vehicle direction"; } ! }; ! ! class VhclDeltaFunc : public VhclFunc { ! public: ! VhclDeltaFunc(ComTerp*); ! virtual void execute(); ! virtual const char* docstring() { ! return "%s(vhcl :x :y :z) -- return last vehicle motion"; } }; class SimRouteFunc : public VhclFunc { Index: VhclServ/vhclhandler.c diff -c VhclServ/vhclhandler.c:1.2 VhclServ/vhclhandler.c:1.4 *** VhclServ/vhclhandler.c:1.2 Fri Apr 16 15:04:10 1999 --- src/VhclServ/vhclhandler.c Mon May 3 12:25:01 1999 *************** *** 1,5 **** /* ! * Copyright (c) 1997-1998 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided --- 1,5 ---- /* ! * Copyright (c) 1997-1999 Vectaport Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided *************** *** 52,58 **** --- 52,61 ---- comterp->add_command("steproute", new StepRouteFunc(comterp)); comterp->add_command("simtime", new VhclSimTimeFunc(comterp)); comterp->add_command("vhclloc", new VhclLocFunc(comterp)); + comterp->add_command("vhcldir", new VhclDirFunc(comterp)); + comterp->add_command("vhcldelta", new VhclDeltaFunc(comterp)); comterp->add_command("simroute", new SimRouteFunc(comterp)); + comterp->add_command("printroute", new PrintRouteFunc(comterp)); MapservHandler::AddCommands(comterp); comterp->add_command("load100kdlgfc", new Load100KDLGFCFunc(comterp)); Index: VpfUnidraw/vpffunc.c diff -c VpfUnidraw/vpffunc.c:1.2 VpfUnidraw/vpffunc.c:removed *** VpfUnidraw/vpffunc.c:1.2 Wed Apr 14 14:03:30 1999 --- src/VpfUnidraw/vpffunc.c Mon May 3 13:20:50 1999 *************** *** 1,142 **** - /* - * Copyright (c) 1997,1998,1999 Vectaport Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of the copyright holders not be used in - * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The copyright holders make - * no representations about the suitability of this software for any purpose. - * It is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ - - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - - /*****************************************************************************/ - - #ifdef VPF_FREE /* if it is not already pulled in by MapServ */ - - LoadVpfFCFunc::LoadVpfFCFunc(ComTerp* comterp) : ComFunc(comterp) { - _tileid_symid = symbol_add("tileid"); - } - - void LoadVpfFCFunc::execute() { - ComValue dbpath(stack_arg(0)); - ComValue libname(stack_arg(1)); - ComValue covname(stack_arg(2)); - ComValue fcname(stack_arg(3)); - ComValue tileid(stack_key(_tileid_symid)); - static int utm_symid = symbol_add("utm"); - ComValue utmflag(stack_key(utm_symid)); - - reset_stack(); - ComValue result; - - Creator::instance(new VpfCreator()); - const char* dbdir = dbpath.string_ptr(); - VpfDatabase* db = new VpfDatabase(dbdir); - VpfLibrary* lib = db->library(libname.string_ptr()); - VpfDbComp* dbcomp = new VpfDbComp(db); - MapShowCmd* showcmd = new MapShowCmd(); - showcmd->SetUseEditor(false); - showcmd->SetLibName(libname.string_ptr()); - showcmd->SetCovName(covname.string_ptr()); - showcmd->SetFClassName(fcname.string_ptr()); - VpfExtent* ext = lib->extent(); - if (utmflag.is_true()) { - char lon0[80]; - sprintf(lon0, "lon_0=%f", ext->x1); // let proj pick the utm zone - char* parms[4]; - parms[0] = "proj=utm"; - parms[1] = "ellps=WGS84"; - parms[2] = lon0; - parms[3] = "no_defs"; - PJ* proj = pj_init(4, parms); - showcmd->SetProjection(proj); - } - if (tileid.type() != ComValue::UnknownType) { - int tid = tileid.int_val(); - showcmd->SetTileId(tid); - } - dbcomp->Interpret(showcmd); - - VpfLibComp* libcomp = (VpfLibComp*)dbcomp->FindLibComp(lib); - VpfCoverage* cov = lib->coverage(covname.string_ptr()); - VpfCovComp* covcomp = (VpfCovComp*)libcomp->FindCovComp(cov); - VpfFeatureClass* fclass = cov->feature_class(fcname.string_ptr()); - VpfFClassComp* fccomp = (VpfFClassComp*)covcomp->FindFClassComp(fclass); - ComponentView* view = new ComponentView(fccomp); - result.type(AttributeValue::ObjectType); - result.obj_ref() = view; - result.obj_type_ref() = FEATURE_CLASS; - push_stack(result); - } - - VpfTileIdsByGeoFunc::VpfTileIdsByGeoFunc(ComTerp* comterp) : ComFunc(comterp) { - } - - void VpfTileIdsByGeoFunc::execute() { - ComValue dbpath = stack_arg(0); - ComValue libname = stack_arg(1); - ComValue swlon = stack_arg(2); - ComValue swlat = stack_arg(3); - ComValue nelon = stack_arg(4); - ComValue nelat = stack_arg(5); - reset_stack(); - - float sw_x = swlon.float_val(); - float sw_y = swlat.float_val(); - float ne_x = nelon.float_val(); - float ne_y = nelat.float_val(); - FBoxObj geobox(sw_x, sw_y, ne_x, ne_y); - - AttributeValueList* avlist = new AttributeValueList(); - Creator::instance(new VpfCreator()); - const char* dbdir = dbpath.string_ptr(); - VpfDatabase* db = new VpfDatabase(dbdir); - VpfLibrary* lib = db->library(libname.string_ptr()); - VpfCoverage* cov = lib->coverage("tileref"); - VpfFeatureClass* fc = cov->feature_class("tileref"); - int nfeats = fc->nfeats(); - for (int i = 0; i < nfeats; i++) { - VpfFeature* tile = fc->feature(i); - MapFace* tile_face = tile->face_primitive(); - TopoFace* tile_topo_face = tile_face->topo(); - FFillPolygonObj* tile_fpoly = tile_topo_face->polygon(); - if (tile_fpoly->Intersects(geobox)) { - int tileid; - long int count; - tile->named_row_element("ID", &tileid, &count); - AttributeValue* tile_id_value = new AttributeValue(tileid, AttributeValue::IntType); - avlist->Append(tile_id_value); - } - } - - ComValue result(avlist); - push_stack(result); - } - - #endif /* VPF_FREE */ --- 0 ---- Index: VpfUnidraw/vpffunc.h diff -c VpfUnidraw/vpffunc.h:1.2 VpfUnidraw/vpffunc.h:removed *** VpfUnidraw/vpffunc.h:1.2 Wed Apr 14 14:03:30 1999 --- src/VpfUnidraw/vpffunc.h Mon May 3 13:20:50 1999 *************** *** 1,53 **** - /* - * Copyright (c) 1997,1998 Vectaport Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of the copyright holders not be used in - * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The copyright holders make - * no representations about the suitability of this software for any purpose. - * It is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ - - #ifndef vpffunc_h - #define vpffunc_h - - #include - - #ifdef VPF_FREE /* if it is not already pulled in by MapServ */ - - class LoadVpfFCFunc : public ComFunc { - public: - LoadVpfFCFunc(ComTerp*); - virtual void execute(); - virtual const char* docstring() { - return "fclass=%s(dbpathstr libnamestr covnamestr fcnamestr :tileid tileidnum :utm) -- import a VPF format feature class"; } - protected: - int _tileid_symid; - }; - - class VpfTileIdsByGeoFunc : public ComFunc { - public: - VpfTileIdsByGeoFunc(ComTerp*); - virtual void execute(); - virtual const char* docstring() { - return "intlist=%s(dbpathstr libname sw_lon sw_lat ne_lon ne_lat) -- return ids of VPF tiles containing a geo rectangle"; } - protected: - }; - - - #endif - #endif - --- 0 ---- Index: config_vhclmaps/local.def diff -c config_vhclmaps/local.def:1.3 config_vhclmaps/local.def:1.4 *** config_vhclmaps/local.def:1.3 Fri Apr 16 15:04:19 1999 --- config/local.def Mon May 3 13:18:38 1999 *************** *** 4,10 **** /*********************************************************/ /* start of things you might want to change in this file */ ! #define IvtoolsVersion 0.7.6 /* * What you need to turn on debugging --- 4,10 ---- /*********************************************************/ /* start of things you might want to change in this file */ ! #define IvtoolsVersion 0.7.7 /* * What you need to turn on debugging Index: config_vhclmaps/params.def diff -c config_vhclmaps/params.def:1.4 config_vhclmaps/params.def:1.5 *** config_vhclmaps/params.def:1.4 Fri Apr 16 15:04:19 1999 --- config/params.def Mon May 3 13:18:38 1999 *************** *** 26,32 **** * VersionNumber */ #ifndef Version ! #define Version 0.7.1 #endif VERSION = Version --- 26,32 ---- * VersionNumber */ #ifndef Version ! #define Version 0.7.2 #endif VERSION = Version Index: config_vhclmaps/site.def.LINUX diff -c config_vhclmaps/site.def.LINUX:1.3 config_vhclmaps/site.def.LINUX:1.4 *** config_vhclmaps/site.def.LINUX:1.3 Tue Apr 13 13:56:56 1999 --- config/site.def.LINUX Mon May 3 12:25:11 1999 *************** *** 31,38 **** MakeDir(dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) dest @@\ -@$(RM) dest/Concat(lib,libname.so) @@\ ! -@$(LN) dest/Concat(lib,libname.so.rev) \ @@\ ! dest/Concat(lib,libname.so) @@\ @@\ uninstall:: @@\ $(RM) dest/Concat(lib,libname.so.rev) @@\ --- 31,38 ---- MakeDir(dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) dest @@\ -@$(RM) dest/Concat(lib,libname.so) @@\ ! -@(cd dest;$(LN) Concat(lib,libname.so.rev) \ @@\ ! Concat(lib,libname.so)) @@\ @@\ uninstall:: @@\ $(RM) dest/Concat(lib,libname.so.rev) @@\ Index: top_vhclmaps/INSTALL diff -c top_vhclmaps/INSTALL:1.2 top_vhclmaps/INSTALL:1.5 *** top_vhclmaps/INSTALL:1.2 Fri Apr 16 15:03:03 1999 --- ./INSTALL Mon May 3 13:18:16 1999 *************** *** 1,7 **** INSTALL for vhclmaps-0.7 ! Instructions for building vhclmaps-0.7.1 from source: 0. Compilation Environment --- 1,7 ---- INSTALL for vhclmaps-0.7 ! Instructions for building vhclmaps-0.7.2 from source: 0. Compilation Environment *************** *** 46,52 **** (MESA_INCLUDE and MESA_LIB) in user.make and then use --with-mesa and --with-shared for configure. ! 1. Creating and/or editing config/site.def.$CPU: 1.a. You no longer need to set your CPU environment variable to build vhclmaps (or ivtools), but you still need a CPU specific configuration --- 46,52 ---- (MESA_INCLUDE and MESA_LIB) in user.make and then use --with-mesa and --with-shared for configure. ! 1. Configuring vhclmaps: 1.a. You no longer need to set your CPU environment variable to build vhclmaps (or ivtools), but you still need a CPU specific configuration *************** *** 103,109 **** ./configure --with-clippoly=/proj/clippoly \ --with-ace=/proj/ACE_wrappers --with-vtk=/proj/vtk \ ! --with-opengl=/proj/Mesa3.0 --with-ivtools=/usr/local/ivtools Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a --- 103,109 ---- ./configure --with-clippoly=/proj/clippoly \ --with-ace=/proj/ACE_wrappers --with-vtk=/proj/vtk \ ! --with-opengl=/proj/Mesa-3.0 --with-ivtools=/usr/local/ivtools Running the configure script generates two files, a config/config.mk that gets included into each Makefile when used, and a *************** *** 120,125 **** --- 120,127 ---- config/site.def.'CPU' has no affect. ** See http://www.vectaport.com/vhclmaps/faq.html for more info. + + 2. Compiling vhclmaps: 2.a. cd to the vhclmaps-0.7/ directory (you'd already be in this directory after running the configure script). Index: top_vhclmaps/README diff -c top_vhclmaps/README:1.2 top_vhclmaps/README:1.3 *** top_vhclmaps/README:1.2 Fri Apr 16 15:03:04 1999 --- ./README Mon May 3 13:18:16 1999 *************** *** 1,7 **** README for vhclmaps 0.7 ! This directory contains a release of the vhclmaps 0.7.1 distribution from Vectaport Inc.. You should read the rest of this file for information on what vhclmaps is (formerly ivmaps) and the INSTALL file for instructions on how to build it. It is known to build on Linux, --- 1,7 ---- README for vhclmaps 0.7 ! This directory contains a release of the vhclmaps 0.7.2 distribution from Vectaport Inc.. You should read the rest of this file for information on what vhclmaps is (formerly ivmaps) and the INSTALL file for instructions on how to build it. It is known to build on Linux, Index: top_vhclmaps/VERSION diff -c top_vhclmaps/VERSION:1.2 top_vhclmaps/VERSION:1.3 *** top_vhclmaps/VERSION:1.2 Fri Apr 16 15:03:04 1999 --- ./VERSION Mon May 3 13:18:16 1999 *************** *** 1,2 **** ! Release 0.7.1 --- 1,2 ---- ! Release 0.7.2 Index: vhclserv/README diff -c vhclserv/README:1.1 vhclserv/README:1.3 *** vhclserv/README:1.1 Wed Mar 24 11:49:19 1999 --- src/vhclserv/README Mon May 3 12:25:03 1999 *************** *** 41,47 **** VEHICLE COMMANDS movevhcl(vhcl dx dy :abs) -- move vehicle in utm coords ! vhclloc(vhcl) -- return vehicle location forward2d(vhcl dist) -- move vehicle forward in its current direction by dist amount backward2d(vhcl dist) -- move vehicle backward in its current direction --- 41,49 ---- VEHICLE COMMANDS movevhcl(vhcl dx dy :abs) -- move vehicle in utm coords ! vhclloc(vhcl :x :y :z) -- return vehicle location ! vhcldir(vhcl :x :y :z) -- return vehicle direction ! vhcldelta(vhcl :x :y :z) -- return last vehicle motion forward2d(vhcl dist) -- move vehicle forward in its current direction by dist amount backward2d(vhcl dist) -- move vehicle backward in its current direction *************** *** 59,70 **** playroute(rte vhcl :speed mps) -- set up to play route at meters/second steproute(rte meters) -- move current position of route forward by meters SIMULATION COMMANDS timeexpr(comstr) -- command string to execute every second ! simtime(secs :abs :reset :back) -- increment simulation time, or set it absolutely, ! or reset to default, or set it backward. simroute(rte vhcl startsec :speed mps) -- set up route to start playing at simulation time ROAD NETWORK COMMANDS --- 61,73 ---- playroute(rte vhcl :speed mps) -- set up to play route at meters/second steproute(rte meters) -- move current position of route forward by meters + printroute(rte :reverse) -- print route waypoints SIMULATION COMMANDS timeexpr(comstr) -- command string to execute every second ! simtime(secs :abs :reset :back :quiet) -- increment simulation time, or set it ! absolutely, or reset to default, or set it backward. simroute(rte vhcl startsec :speed mps) -- set up route to start playing at simulation time ROAD NETWORK COMMANDS