Annotation of pmsdk/samples/linefrac/lfxform.c, revision 1.1

1.1     ! root        1: /************************************************************************
        !             2: *
        !             3: *   lfxform.c -- Built-in similarity transforms.
        !             4: *
        !             5: *   Created by Microsoft Corporation, 1989
        !             6: *
        !             7: ************************************************************************/
        !             8: 
        !             9: #define INCL_GPI
        !            10: #include <os2.h>
        !            11: #include "linefrac.h"
        !            12: 
        !            13: 
        !            14: 
        !            15: 
        !            16: #define SQRT_2 1.4142136
        !            17: #define SQRT_3 1.7320508
        !            18: 
        !            19: 
        !            20: 
        !            21: 
        !            22: /************************************************************************
        !            23: *
        !            24: *   SharkTooth
        !            25: *
        !            26: *   Set up the similarity transform for the following linefractal,
        !            27: *   which looks roughly like:
        !            28: *
        !            29: *
        !            30: *                               *
        !            31: *                   ===>      *   *
        !            32: *                           *       *
        !            33: *   ***************       *           *
        !            34: *
        !            35: ************************************************************************/
        !            36: 
        !            37: LINEFRAC SharkTooth[] =
        !            38: {
        !            39:     &SharkTooth[1],  PI / 6.0, (1.0/SQRT_3), FALSE,
        !            40:     EOLIST,        -PI / 3.0, (1.0/SQRT_3), FALSE
        !            41: };
        !            42: 
        !            43: 
        !            44: 
        !            45: 
        !            46: /************************************************************************
        !            47: *
        !            48: *   SawTooth
        !            49: *
        !            50: *   Set up the similarity transform for the following linefractal,
        !            51: *   which looks roughly like:
        !            52: *
        !            53: *
        !            54: *
        !            55: *                   ===>      *
        !            56: *                           *   *
        !            57: *   ***************       *       *       *
        !            58: *                                   *   *
        !            59: *                                     *
        !            60: *
        !            61: ************************************************************************/
        !            62: 
        !            63: LINEFRAC SawTooth[] =
        !            64: {
        !            65:     &SawTooth[1],  PI / 4.0, (0.5 / SQRT_2), FALSE,
        !            66:     &SawTooth[2], -PI / 2.0, (1.0 / SQRT_2), FALSE,
        !            67:     EOLIST,       PI / 2.0, (0.5 / SQRT_2), FALSE
        !            68: };
        !            69: 
        !            70: 
        !            71: 
        !            72: 
        !            73: /************************************************************************
        !            74: *
        !            75: *   KochIsland
        !            76: *
        !            77: *   Set up the similarity transform for the following linefractal,
        !            78: *   which looks roughly like:
        !            79: *
        !            80: *   This is known as the Koch, or snowflake, transform.
        !            81: *
        !            82: *
        !            83: *                                *
        !            84: *                   ===>        * *
        !            85: *                              *   *
        !            86: *   ***************       *****     *****
        !            87: *
        !            88: ************************************************************************/
        !            89: 
        !            90: LINEFRAC Koch[] =
        !            91: {
        !            92:      &Koch[1],          0.0, 1.0 / 3.0, FALSE,
        !            93:      &Koch[2],     PI / 3.0, 1.0 / 3.0, FALSE,
        !            94:      &Koch[3], -2 * PI / 3.0, 1.0 / 3.0, FALSE,
        !            95:      EOLIST,       PI / 3.0, 1.0 / 3.0, FALSE
        !            96: };
        !            97: 
        !            98: 
        !            99: 
        !           100: 
        !           101: /************************************************************************
        !           102: *
        !           103: *   SpaceFiller
        !           104: *
        !           105: *   Set up the similarity transform for the following linefractal,
        !           106: *   which looks roughly like:
        !           107: *
        !           108: *
        !           109: *                         ***B******C***
        !           110: *                         *            *
        !           111: *                         A            D
        !           112: *   **************   ===>  *           *
        !           113: *
        !           114: *
        !           115: *   where sides A and D are reflections.
        !           116: *
        !           117: *
        !           118: *
        !           119: ************************************************************************/
        !           120: 
        !           121: LINEFRAC SpaceFiller[] =
        !           122: {
        !           123:     &SpaceFiller[1],  PI / 2.0, 0.5, TRUE,
        !           124:     &SpaceFiller[2], -PI / 2.0, 0.5, FALSE,
        !           125:     &SpaceFiller[3],      0.0, 0.5, FALSE,
        !           126:     EOLIST,         -PI / 2.0, 0.5, TRUE
        !           127: };
        !           128: 
        !           129: 
        !           130: 
        !           131: 
        !           132: /************************************************************************
        !           133: *
        !           134: *   StovePipe
        !           135: *
        !           136: *   Set up the similarity transform for the following linefractal,
        !           137: *   which looks roughly like:
        !           138: *
        !           139: *   This is sometimes known as the stovepipe transform.
        !           140: *
        !           141: *
        !           142: *                             ******
        !           143: *                             *    *
        !           144: *                   ===>      *    *
        !           145: *                             *    *
        !           146: *   **************        *****    *****
        !           147: *
        !           148: ************************************************************************/
        !           149: 
        !           150: LINEFRAC StovePipe[] =
        !           151: {
        !           152:     &StovePipe[1],      0.0, 1.0 / 3.0, FALSE,
        !           153:     &StovePipe[2],  PI / 2.0, 1.0 / 3.0, FALSE,
        !           154:     &StovePipe[3], -PI / 2.0, 1.0 / 3.0, FALSE,
        !           155:     &StovePipe[4], -PI / 2.0, 1.0 / 3.0, FALSE,
        !           156:     EOLIST,        PI / 2.0, 1.0 / 3.0, FALSE
        !           157: };
        !           158: 
        !           159: 
        !           160: 
        !           161: 
        !           162: /************************************************************************
        !           163: *
        !           164: *   SquareWave
        !           165: *
        !           166: *   Set up the similarity transform for the following linefractal,
        !           167: *   which looks roughly like:
        !           168: *
        !           169: *
        !           170: *                         ******
        !           171: *                         *    *
        !           172: *   **************   ===>  *   *    *
        !           173: *                              *    *
        !           174: *                              ******
        !           175: *
        !           176: ************************************************************************/
        !           177: 
        !           178: LINEFRAC SquareWave[] =
        !           179: {
        !           180:     &SquareWave[1],  PI / 2.0, 0.25, FALSE,
        !           181:     &SquareWave[2], -PI / 2.0, 0.5,  FALSE,
        !           182:     &SquareWave[3], -PI / 2.0, 0.5,  FALSE,
        !           183:     &SquareWave[4],  PI / 2.0, 0.5,  FALSE,
        !           184:     EOLIST,         PI / 2.0, 0.25, FALSE
        !           185: };
        !           186: 
        !           187: 
        !           188: 
        !           189: 
        !           190: /************************************************************************
        !           191: *
        !           192: *   HourGlass
        !           193: *
        !           194: *   Set up the similarity transform for the following linefractal,
        !           195: *   which looks roughly like:
        !           196: *
        !           197: *
        !           198: *                            * * * * *
        !           199: *                              *   *
        !           200: *                                *
        !           201: *                   ===>       *   *
        !           202: *                            *       *
        !           203: *   **************         *           *
        !           204: *
        !           205: ************************************************************************/
        !           206: 
        !           207: #define HOURGLASSANGLE 0.463648
        !           208: #define HOURGLASSLEN   0.83852549
        !           209: 
        !           210: LINEFRAC HourGlass[] =
        !           211: {
        !           212:     &HourGlass[1],     HOURGLASSANGLE, HOURGLASSLEN, FALSE,
        !           213:     &HourGlass[2],  PI-HOURGLASSANGLE, 0.5,         FALSE,
        !           214:     EOLIST,       -PI-HOURGLASSANGLE, HOURGLASSLEN, FALSE
        !           215: };
        !           216: 
        !           217: 
        !           218: 
        !           219: 
        !           220: /************************************************************************
        !           221: *
        !           222: *   aXform
        !           223: *
        !           224: *   This lists all the built-in transforms available, with their default
        !           225: *   coordinate offsets and scale factors.
        !           226: *
        !           227: ************************************************************************/
        !           228: 
        !           229: XFORMDATA aXform[] =
        !           230: {
        !           231:     SharkTooth,  0.200,  0.200,  0.60, 0.60, 3,
        !           232:     SawTooth,   0.125,  0.125,  0.75, 0.75, 3,
        !           233:     Koch,       0.125,  0.125,  0.75, 0.75, 3,
        !           234:     SpaceFiller, 0.000, -0.500,  1.00, 1.00, 1,
        !           235:     StovePipe,  0.125,  0.125,  0.75, 0.75, 4,
        !           236:     SquareWave,  0.200,  0.200,  0.60, 0.60, 5,
        !           237:     HourGlass,  0.250,  0.250,  0.50, 0.50, 2
        !           238: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.