// Last edited on 2010-05-16 00:04:21 by stolfilocal // Horizontal arm of camera rig (including T-plate) #include "pst_camera_device.inc" #include "pst_bars.inc" #include "pst_screws.inc" // Dimensions of horizontal arm: #declare camera_arm_len = 700; // Total length. #declare camera_arm_wdt = bar_extruded_2x2_wdt; #declare camera_arm_bkX = 100; // Length behind the column attachment. // Corner-plate dimensions: #declare camera_arm_plate_thk = 3; #declare camera_arm_T_wdt = 25; #declare camera_arm_T_szX = 140; #declare camera_arm_T_szZ = 100; // Position of holes in col-arm tee-plate: #declare camera_arm_T_hole1_dst = 40; // From medial axis corner. #declare camera_arm_T_hole2_dst = 20; // From tip of plate arm. // Stem radius of bolts and bolt holes: #declare camera_arm_bolt_rad = extruded_bar_hole_radius(camera_arm_wdt); #declare camera_arm_bolt_hrad = camera_arm_bolt_rad + 0.5; // Position of camera pinhole relative to the arm's origin: #declare camera_arm_fcZ = - camera_device_holder_dpZ - camera_device_focal_Z(); #declare camera_arm_fcY = - camera_device_holder_dpY + camera_arm_wdt/2; #macro camera_arm(cam_dpX,explode) // The horizontal arm. // Extends along the X axis from X={dpx}. // arm dimensions: #local arm_bkX = camera_arm_bkX; #local arm_szX = camera_arm_len; #local arm_szY = camera_arm_wdt; #local arm_szZ = camera_arm_wdt; // Camera translation: #local cam_dpY = - camera_device_holder_dpY + camera_arm_wdt/2; #local cam_dpZ = camera_device_holder_dpZ; // Corner and tee plates: #local plate_thk = camera_arm_plate_thk; // Bolts that hold corner and tee plates to extruded bars: #local plate_bolt_len = camera_arm_plate_thk + 10; #local plate_bolt_rad = camera_arm_bolt_rad; #local plate_bolt_hrad = camera_arm_bolt_hrad; // Bolts that hold the arm-col tee-plate to the arm: #local arm_T_bolt1_dpX = - camera_arm_T_szX/2 + camera_arm_T_hole2_dst; #local arm_T_bolt2_dpX = + camera_arm_T_szX/2 - camera_arm_T_hole2_dst; // Bolts that hold the camera holder to the arm: #local H_beg_dpX = cam_dpX - camera_device_body_szX/2; #local H_tip_dpX = H_beg_dpX - camera_device_holder_szX; #local H_bolt1_dpX = H_beg_dpX - camera_device_holder_hole1_dst; #local H_bolt2_dpX = H_tip_dpX + camera_device_holder_hole2_dst; #local plate_bolt_washer_and_nut = object{ slot_bolt_washer_and_nut(plate_bolt_len,plate_bolt_rad,arm_szZ,plate_thk,false,true,explode) } #local col_arm_tee_plate = object{ flat_tee_plate( camera_arm_T_szX, camera_arm_T_szZ, camera_arm_T_wdt, plate_thk, camera_arm_bolt_hrad, camera_arm_T_hole1_dst, camera_arm_T_hole2_dst ) texture{ tx_steel } } #local col_arm_tee_plate_with_bolts = // Assumes arm is centered on X axis and that the column axis has Z=0. // Places it flush on the +Y side, with column holes at X=0. union{ object{ col_arm_tee_plate translate (arm_szY/2 + plate_thk/2 + 10*explode)*y } object{ plate_bolt_washer_and_nut rotate 90*z rotate 90*y translate arm_T_bolt1_dpX*x } object{ plate_bolt_washer_and_nut rotate 90*z rotate 90*y translate arm_T_bolt2_dpX*x } // object{ axes(1.0,200) no_shadow } } union{ object{ extruded_bar(camera_arm_wdt, camera_arm_len) rotate 90*y texture{ tx_aluminum } translate -arm_bkX*x } object{ col_arm_tee_plate_with_bolts } object{ camera_device_with_holder(camera_arm_bolt_hrad) rotate 180*y translate < cam_dpX, cam_dpY + 10*explode, cam_dpZ > } object{ plate_bolt_washer_and_nut rotate 90*z rotate 90*y translate H_bolt1_dpX*x } object{ plate_bolt_washer_and_nut rotate 90*z rotate 90*y translate H_bolt2_dpX*x } } #end #debug "loaded pst_camera_arm.inc\n"