api_random_scale_pattern
List of: Functions
Subjects: Patterns
Contents: Kernel

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

Prototype: outcome api_random_scale_pattern (


pattern*& pat, // created pattern


const pattern& in_pattern,// input pattern


double min_scale, // lower bound to the




// applied scale values


double max_scale, // upper bound to the




// applied scale values


const SPAposition& root, // root position


logical merge = TRUE, // merge flag


AcisOptions* ao = NULL // acis options


);


outcome api_random_scale_pattern (


pattern*& pat, // created pattern


const pattern& in_pattern,// input pattern


const SPAvector& min_scale,// lower bound to the




// applied scale values


const SPAvector& max_scale,// upper bound to the




// applied scale values


const SPAposition& root, // root 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 random scale to an existing pattern, merging with any existing scaling or, optionally (with merge=FALSE), replacing it. The arguments min_scale and max_scale place limits upon the scale values, and can be given as vectors when nonuniform scaling is desired. 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). Both min_scale and max_scale 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 min_scale = 0.5;

double max_scale = 2.0;

SPAposition root(0, 0, 0);

check_outcome(result = api_random_scale_pattern(mod_pat, *pat, min_scale, max_scale, 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();

Errors: One or more of the specified scaling factors is zero or negative.

Library: kernel

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

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