api_periodic_scale_pattern
List of: Functions
Subjects: Patterns
Contents: Kernel

Action: Creates a new pattern by applying a periodic scale to an existing pattern.

Prototype: outcome api_periodic_scale_pattern (


pattern*& pat, // created pattern


const pattern& in_pattern,// input pattern


const double* scale, // array of scale values


int period, // # of scale values


int which_dim, // dimension for scaling


const SPAposition& root, // base position


logical merge // merge flag



= TRUE,


AcisOptions* ao = NULL // acis options


);


outcome api_periodic_scale_pattern(


pattern*& pat, // created pattern


const pattern& in_pattern,// input pattern


const SPAvector* scale, // array of scale values


int period, // number of scale values


int which_dim, // dimension for scaling


const SPAposition& root, // base position


logical merge = TRUE, // merge flag


AcisOptions* ao = NULL // acis options


);

Includes: #include "kernel/acis.hxx"

#include "baseutil/logical.h"

#include "baseutil/vector/position.hxx"

#include "kernel/kernapi/api/api.hxx"

#include "kernel/kernutil/law/pattern.hxx"

#include "kernel/kernutil/law/pattern_api.hxx"

#include "kernel/kernapi/api/acis_options.hxx"

#include "baseutil/vector/vector.hxx"

Description: Applies a periodic scale to an existing pattern, merging with any existing scaling or, optionally (with merge=FALSE), replacing it. The argument scale is the list of the successive scale values, and can be given as a vector list when nonuniform scaling is desired, so that the size of the list (period) is the periodicity of the scaling pattern. The argument which_dim specifies the dimension in which the scale is applied. The position root specifies the neutral point about which the scaling takes place (i.e., the point on the seed entity that remains fixed while the entity's dimensions are altered). All scale values in the list must be greater than zero.


The following code snippet shows an example of how this API can be used.


// Create a pattern

pattern* pat = NULL;

SPAvector x_vec(4.0, 0, 0);

int num_x = 8;

SPAvector y_vec(0, 2.0, 0);

int num_y = 10;

check_outcome(result = api_linear_pattern(pat, x_vec, num_x, y_vec, num_y));


// Modify the pattern

pattern* mod_pat = NULL;

double scale[4];

scale[0] = 0.5;

scale[1] = 1.5;

scale[2] = 1.0;

scale[3] = 2.0;

int which_dim = 0;

SPAposition root(0, 0, 0);

check_outcome(result = api_periodic_scale_pattern(mod_pat, *pat, scale, 4, which_dim, root));


// Create a prism

BODY* prism = NULL;

double height = 1.0;

double maj_rad = 1.0;

double min_rad = 0.5;

int num_sides = 3;

check_outcome(result = api_make_prism(height, maj_rad, min_rad, num_sides, prism));


// Apply the pattern to the prism

check_outcome(result = api_set_entity_pattern(prism, mod_pat));


// Clean up

pat->remove();

mod_pat->remove();

Library: kernel

Filename: kern/kernel/kernutil/law/pattern_api.hxx

Effect: Changes model
PDF/KERN/16FNA.PDF
HTM/DATA/KERN/KERN/16FNA/0112.HTM