ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfdoc.tr
(Generate patch)

Comparing ray/src/cv/mgflib/mgfdoc.tr (file contents):
Revision 1.1 by greg, Fri May 12 14:26:12 1995 UTC vs.
Revision 1.12 by greg, Mon Dec 4 12:27:04 1995 UTC

# Line 431 | Line 431 | Since the arguments are concise and self-explanatory,
431   sufficient.
432   The following transformation flags and
433   parameters are defined:
434 < .TS I
434 > .TS
435 > center;
436   l l.
437   -t dx dy dz     translate objects along the given vector
438   -rx degrees     rotate objects about the X-axis
# Line 546 | Line 547 | Detailed MGF Example
547   The following example of a simple room with a single door
548   and six file cabinets shows MGF in action, with copious comments to
549   help explain what's going on.
550 + .LP
551   .DS
552   # "ceiling_tile" is a diffuse white surface with 75% reflectance:
553   # Create new named material context and clear it
# Line 744 | Line 746 | o door
746          o
747   o
748  
747        i cubfurn.inc -mx -t 405 133.5 0
748 o
749
749   # Six file cabinets (36" wide each)
750   # ("filecab.inc" was given as an earlier example in Section 1.2)
751   o filecab.x
# Line 772 | Line 771 | There are currently 28 entities in the MGF specificati
771   For ease of reference we have broken these into five categories:
772   .IP 1.
773   General
774 < .TS I
774 > .TS
775   lw(.75i) lw(1.75i) lw(3i).
776   #       [anything ...]  a comment
777   o       [name]  begin/end object context
# Line 782 | Line 781 | ies    pathname [-m f][xform]  include IES luminaire (with
781   .TE
782   .IP 2.
783   Color
784 < .TS I
784 > .TS
785   lw(.75i) lw(1.75i) lw(3i).
786   c       [id [= [template]]]     get/set color context
787   cxy     x y     set CIE (x,y) chromaticity for current color
# Line 1267 | Line 1266 | corresponds to the measurement at
1266   Values in between are separated by
1267   .I "(l_max-l_min)/(N-1)"
1268   nanometers.
1269 < All values must be non-negative, and the spectrum outside of the
1269 > All values should be non-negative unless defining a component for
1270 > complementary color mixing, and the spectrum outside of the
1271   specified range is assumed to be zero.
1272   (The visible range is 380 to 780 nm.)\0
1273   The actual units and scale of the measurements do not matter,
# Line 2226 | Line 2226 | o stylus
2226                  p 0 0 .005
2227          v vend =
2228                  p 0 0 .05
2229 <        cyl vtip1 .0015
2229 >        cyl vtip1 .0015 vend
2230          sph vend .0015
2231          cone vtip0 0 vtip1 .0015
2232   o
# Line 2388 | Line 2388 | ring - create a circular ring with inner and outer rad
2388   .SH
2389   SYNOPSIS
2390   .LP
2391 < .B cyl
2391 > .B ring
2392   .I "vc rmin rmax"
2393   .SH
2394   DESCRIPTION
# Line 2501 | Line 2501 | SEE ALSO
2501   .NH
2502   MGF Translators
2503   .LP
2504 < Initially, there are four translators for MGF data, but only
2505 < one of these is distributed with the MGF parser itself,
2506 < .I mgfilt.
2504 > Initially, there are five translators for MGF data, but only
2505 > two of these are distributed with the MGF parser itself,
2506 > .I mgfilt
2507 > and
2508 > .I mgf2inv.
2509   Two of the other translators,
2510   .I mgf2rad
2511   and
# Line 2516 | Line 2518 | package\(dg.
2518   nestor.epfl.ch, or by WWW from
2519   "http://radsite.lbl.gov/radiance/HOME.html"
2520   .FE
2521 < A third translator,
2521 > The fifth translator,
2522   .I mgf2meta,
2523   converts to a 2-dimensional line plot, and is also
2524   distributed with Radiance.
# Line 2533 | Line 2535 | unwanted entities.
2535   In future releases of MGF, this utility will also be handy for
2536   taking new entities and producing older versions of MGF for
2537   translators that have not yet been updated properly.
2538 + .LP
2539 + Mgf2inv converts from MGF to Inventor or VRML format.
2540 + Some information is lost, because these formats do not support
2541 + physical light sources or materials.
2542   .ds LH Translators
2543   .ds RH MGFILT
2544   .bp
# Line 2567 | Line 2573 | In the first form, a single integer is given for the
2573   of MGF that is to be produced.
2574   Since MGF is in its first major release, this is not yet a useful
2575   form, but it will be when the second major release comes out.
2576 + This has the necessary side-effect of expanding all included files.
2577 + (See the
2578 + .UL i
2579 + entity.)\0
2580   .LP
2581   In the second form,
2582   .I mgfilt
# Line 2591 | Line 2601 | mgfilt f,v,p,xf input.mgf > flatpoly.mgf
2601   .SH
2602   SEE ALSO
2603   .LP
2604 < mgf2rad, rad2mgf
2604 > i, mgf2inv, mgf2rad, rad2mgf
2605 > .ds RH MGF2INV
2606 > .bp
2607 > .SH
2608 > NAME
2609 > .LP
2610 > mgf2inv - convert from MGF to Inventor or VRML format
2611 > .SH
2612 > SYNOPSIS
2613 > .LP
2614 > .B mgf2inv
2615 > [
2616 > .B "-1|-2|-vrml"
2617 > ]
2618 > [
2619 > .B input ..
2620 > ]
2621 > .SH
2622 > DESCRIPTION
2623 > .LP
2624 > .I Mgf2inv
2625 > takes one or more MGF input files and converts it to
2626 > Inventor or VRML format.
2627 > If the
2628 > .I \-1
2629 > option is used, then Inventor 1.0 ASCII output is produced.
2630 > If the
2631 > .I \-2
2632 > option is used, then Inventor 2.0 ASCII output is produced.
2633 > (This is the default.)\0
2634 > If the
2635 > .I \-vrml
2636 > option is used, then VRML 1.0 ASCII output is produced.
2637 > .LP
2638 > This converter does not work properly for light sources, since
2639 > the output formats do not support IES-type luminaires with recorded
2640 > distributions.
2641 > Also, some material information may be lost because Inventor lacks
2642 > a physically valid reflectance model.
2643 > .SH
2644 > EXAMPLES
2645 > .LP
2646 > To take an MGF file and convert it to VRML format:
2647 > .IP
2648 > mgf2inv -vrml myscene.mgf > myscene.iv
2649 > .SH
2650 > SEE ALSO
2651 > .LP
2652 > mgf2rad, mgfilt, rad2mgf
2653   .ds RH MGF2RAD
2654   .bp
2655   .SH
# Line 2695 | Line 2753 | Greg Ward
2753   SEE ALSO
2754   .LP
2755   ies2rad(1), mgf2meta(1), obj2rad(1), oconv(1), rad2mgf(1), xform(1)
2756 < .ds RH
2699 < RAD2MGF
2756 > .ds RH RAD2MGF
2757   .bp
2758   .SH
2759   NAME
# Line 2985 | Line 3042 | char   **av;
3042  
3043          if (ac < 4)                     /* check # arguments */
3044                  return(MG_EARGC);
3045 <        printf("face\n");               /* begin face output */
3045 >        printf("face\\\\n");            /* begin face output */
3046          for (i = 1; i < ac; i++) {
3047                  if ((vp = c_getvert(av[i])) == NULL)    /* vertex from name */
3048                          return(MG_EUNDEF);
3049                  xf_xfmpoint(vert, vp->p);                       /* apply transform */
3050 <                printf("%15.9f %15.9f %15.9f\n",
3050 >                printf("%15.9f %15.9f %15.9f\\\\n",
3051                          vert[0], vert[1], vert[2]);                     /* output vertex */
3052          }
3053 <        printf(";\\n");                 /* end of face output */
3053 >        printf(";\\\\n");                       /* end of face output */
3054          return(MG_OK);                  /* normal exit */
3055   }
3056  
# Line 3122 | Line 3179 | following:
3179   #define MG_E_CMIX               4               /* cmix */
3180   #define MG_E_CSPEC              5               /* cspec        */
3181   #define MG_E_CXY                6               /* cxy          */
3182 < #define MG_E_CYL                7               /* cyl  */
3182 > #define MG_E_CYL                7               /* cyl          */
3183   #define MG_E_ED         8               /* ed           */
3184   #define MG_E_FACE               9               /* f            */
3185   #define MG_E_INCLUDE    10              /* i            */
3186   #define MG_E_IES                11              /* ies          */
3187 < #define MG_E_IR         12              /* ir           */
3187 > #define MG_E_IR                 12              /* ir           */
3188   #define MG_E_MATERIAL   13              /* m            */
3189   #define MG_E_NORMAL     14              /* n            */
3190   #define MG_E_OBJECT     15              /* o            */
# Line 3267 | Line 3324 | and return one of the non-zero values from "parser.h"
3324   #define MG_EUNK         1               /* unknown entity */
3325   #define MG_EARGC                2               /* wrong number of arguments */
3326   #define MG_ETYPE                3               /* argument type error */
3327 < #define MG_EILL         4               /* illegal argument value */
3327 > #define MG_EILL                         4               /* illegal argument value */
3328   #define MG_EUNDEF               5               /* undefined reference */
3329   #define MG_ENOFILE              6               /* cannot open input file */
3330   #define MG_EINCL                7               /* error in included file */
3331   #define MG_EMEM         8               /* out of memory */
3332   #define MG_ESEEK                9               /* file seek error */
3333   #define MG_EBADMAT      10              /* bad material specification */
3334 + #define MG_ELINE                11              /* input line too long */
3335 + #define MG_ECNTXT               12              /* unmatched context close */
3336  
3337 < #define MG_NERRS        11
3337 > #define MG_NERRS        13
3338   .DE
3339   If it is inappropriate to send output to standard error, the calling
3340   program should use the routines listed under
# Line 3289 | Line 3348 | listed above in the native country's language.
3348   .SH
3349   SEE ALSO
3350   .LP
3351 < mg_fgetpos, mg_handle, mg_init
3351 > mg_fgetpos, mg_handle, mg_init, mg_open
3352   .ds RH MG_OPEN
3353   .bp
3354   .SH
# Line 3359 | Line 3418 | The
3418   function reads the next input line from the current file,
3419   returning the number of characters in the line, or zero if the
3420   end of file is reached or there is a file error.
3421 < The function skips over escaped newlines, and keeps track of the
3421 > If the value returned equals MG_MAXLINE-1,
3422 > then the input line was too long, and you
3423 > should return an MG_ELINE error.
3424 > The function keeps track of the
3425   line number in the current file context
3426   .I mg_file,
3427   which also contains the line that was read.
# Line 4275 | Line 4337 | mg_init, mg_load, obj_handler, xf_xfmpoint
4337   .SH
4338   NAME
4339   .LP
4340 < xf_xfmpoint xf_xfmvect, xf_rotvect, xf_scale - apply current
4340 > xf_xfmpoint, xf_xfmvect, xf_rotvect, xf_scale - apply current
4341   transformation
4342   .SH
4343   SYNOPSIS
# Line 4304 | Line 4366 | to the point
4366   .I pold,
4367   scaling, rotating and moving it to its proper location, which is put in
4368   .I pnew.
4369 < (The two arguments may point to the same vector.)\0
4369 > (As for
4370 > .I xf_xfmvect
4371 > and
4372 > .I xf_rotvect,
4373 > the two arguments may point to the same vector.)\0
4374   .LP
4375   The
4376   .I xf_xfmvect
# Line 4312 | Line 4378 | routine applies the current transformation to the vect
4378   .I vold,
4379   scaling and rotating it to its proper location, which is put in
4380   .I vnew.
4315 (The two arguments may point to the same vector.)\0
4381   The only difference between
4382   .I xf_xfmpoint
4383   and
# Line 4325 | Line 4390 | routine rotates the vector
4390   .I nold
4391   using the current transformation, and stores the result in
4392   .I nnew.
4328 (The two arguments may point to the same vector.)\0
4393   No translation or scaling is applied, which is the appropriate
4394   action for surface normal vectors for example.
4395   .LP
# Line 4486 | Line 4550 | and adopt the following code to convert between CIE an
4550   #define  CIE_y_w                0.3333
4551   #endif
4552  
4553 < #define CIE_D           (       CIE_x_r*(CIE_y_g - CIE_y_b) + \\\\
4554 <                                CIE_x_g*(CIE_y_b - CIE_y_r) + \\\\
4553 > #define CIE_D           (       CIE_x_r*(CIE_y_g - CIE_y_b) + \\
4554 >                                CIE_x_g*(CIE_y_b - CIE_y_r) + \\
4555                                  CIE_x_b*(CIE_y_r - CIE_y_g)     )
4556 < #define CIE_C_rD        ( (1./CIE_y_w) * \\\\
4557 <                                ( CIE_x_w*(CIE_y_g - CIE_y_b) - \\\\
4558 <                                  CIE_y_w*(CIE_x_g - CIE_x_b) + \\\\
4556 > #define CIE_C_rD        ( (1./CIE_y_w) * \\
4557 >                                ( CIE_x_w*(CIE_y_g - CIE_y_b) - \\
4558 >                                  CIE_y_w*(CIE_x_g - CIE_x_b) + \\
4559                                    CIE_x_g*CIE_y_b - CIE_x_b*CIE_y_g     ) )
4560 < #define CIE_C_gD        ( (1./CIE_y_w) * \\\\
4561 <                                ( CIE_x_w*(CIE_y_b - CIE_y_r) - \\\\
4562 <                                  CIE_y_w*(CIE_x_b - CIE_x_r) - \\\\
4560 > #define CIE_C_gD        ( (1./CIE_y_w) * \\
4561 >                                ( CIE_x_w*(CIE_y_b - CIE_y_r) - \\
4562 >                                  CIE_y_w*(CIE_x_b - CIE_x_r) - \\
4563                                    CIE_x_r*CIE_y_b + CIE_x_b*CIE_y_r     ) )
4564 < #define CIE_C_bD        ( (1./CIE_y_w) * \\\\
4565 <                                ( CIE_x_w*(CIE_y_r - CIE_y_g) - \\\\
4566 <                                  CIE_y_w*(CIE_x_r - CIE_x_g) + \\\\
4564 > #define CIE_C_bD        ( (1./CIE_y_w) * \\
4565 >                                ( CIE_x_w*(CIE_y_r - CIE_y_g) - \\
4566 >                                  CIE_y_w*(CIE_x_r - CIE_x_g) + \\
4567                                    CIE_x_r*CIE_y_g - CIE_x_g*CIE_y_r     ) )
4568  
4569   #define CIE_rf          (CIE_y_r*CIE_C_rD/CIE_D)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines