<<<<<<<<<<<<<<<<<

radar_modeller(model) Geometric Modelling radar_modeller(model)

NAME

radar_modeller - a geometric representation of radar detection volume

DESCRIPTION

The radar_modeller class implements a geometric representation of a radar detection volume. This volume is a sphere wedge when there is no terrain elevating to obscure the radar view. The inner and outer surfaces of unobscured radar volume represent parts of spheres limited by two longitudinal angles and two altitudinal angles. The resolution of radar_modeller defines the number of subdivisions of the differences of these angles and also of the difference of radii. If the terrain elevates above the radar volume, the geometry is changed in the following way: every point on the outer surface subdivision (according to resolution) is moved toward the radar position to occupy the first point of intersection with the terrain of a ray connecting this point with the radar position

SUPERCLASS

new_modeller

INSTANCE VARIABLES

phi1 Spherical coordinate specifying one of the four sides, one of the longitudes.

phi2 Spherical coordinate specifying the side opposite that specified by phi1.

terrain The name of two_d object that is used to represent terrain surface. This object should respond to messages "@ (x,y)" and "interpolate?".

theta1 Spherical coordinate specifying the higher altitude. Zero corresponds to zenith.

theta2 Spherical coordinate specifying the lower altitude. Ninety degrees corresponds to horizontal plane.

inner_radius The inner radius of the inner surface of the radar_modeller.

MESSAGES

generate_data! Build a local geometric representation if the object has been modified since the last time it was built.

phi1[=?+] Sets/gets/increments the phi1 instance variable.

phi2[=?+] Sets/gets/increments the phi2 instance variable.

theta1[=?+] Sets/gets/increments the theta1 instance variable.

theta2[=?+] Sets/gets/increments the theta2 instance variable.

radius= Sets the external surface radius.

inner_radius[=?+] Sets/gets/increments the inner_radius instance variable.

EXAMPLE

/* * specify where the data is coming from */ filep new: terraindata filename=`terrain.data' mode=r open! format= `10 ;

string new: `line' scan_format= `2.36074e-3134.34611e-3111.29404e-231'; vector new: `terraininfo' dimension=3; logic new: `if';

/* * Read points that specify a particular elevation at a location. * Create a triangle mesh out of these points. */

# # reading terrain definition points and creating surface # two_d new: terrain_level;

loop new: read_points_loop duration=1 resolution=1 tick_actions=` line = [terraindata get?]; if equal: (-1,[terraindata errno?])unknown command: wh360 true: "read_points_loop exit!;"; terraininfo = [line scan?]; terrain_levelunknown command: wh216 x=[terraininfo @ 1 ? ] y=[terraininfo @ 2 ? ]unknown command: wh240 value=[terraininfo @ 3 ? ] ; ' tick_actions+"read_points_loop duration+ 1;" ;

read_points_loop start!;

terraindata close!;

display_data new: level_data;

terrain_level planar_interpolate_on!

elevations_on! data_out=`level_data' interval= 3 output_style="polygons" generate_triangle_data! ; display_surface new: terrain_surface data_in=`level_data' scalar_visibility_on! range=(1,18) ;

actor new: terrain modeller=terrain_surface ;

/* * specify radar locations and coverage areas */

radar_modeller new: m1

position=(30,30,[terrain_level x=30 y=30 interpolate?])

position+(0,0,2)

resolution=10

inner_radius=.1

radius=150

phi1=30

phi2=80

theta1=70

theta2=90

terrain= terrain_level ;

actor new: b1 modeller= m1 color=(1,0,0) ;

environment new: `env' variable="LYMB_RENDERER" print!;

collection new: allactors members=[actor instances?];

object#[env value?] new: `aren' background=(1,1,1) actors=[actor instances?] cameras=c1 lights=(l1,l2);

camera new: `c1' position=(175,1300,0) focal_point=(175,150,0) view_up= (0,0,1) clipping_range=(653,2265) on!;

light new:l1 position=[c1 position?] on!; light new:l2 position=(175,150,100) focal_point=(175,150,0) on!;

aren render!;

SEE ALSO

new_modeller, two_d


Please send comments and suggestions to
consult@rpi.edu