SchemeExt:Entity:rotate
From DocR23
Contents |
Action
Rotates an entity or list of entities.
Filename
scm/scmext/kern/transform_scm.cpp
APIs
api_transform_entity, api_change_body_trans
Syntax
(entity:rotate body-list [xorigin yorigin zorigin] xaxis yaxis zaxis angle [fix-transform=#f])
Argument Types
| Argument | Scheme Data Type |
|---|---|
| body-list | (entity | entity ...) |
| xorigin | real |
| yorigin | real |
| zorigin | real |
| xaxis | real |
| yaxis | real |
| zaxis | real |
| angle | real |
| fix-transform | boolean |
Returns
(entity | entity ...)
Errors
Given entity or entities must be a body.
Description
This is a faster way to rotate entities in Scheme. Before (entity:rotate), one had to type:
(entity:transform ent (transform:rotation (position x y z)(gvector x y z) angle))
This shorthand version lets you do the same operation with:
(entity:rotate ent x y z x y z angle)
Arguments
- body-list specifies an entity or a list of entities that has to be rotated.
- xorigin, yorigin, and zorigin specify the origin point for rotation. If the origin values are not specified, then (0,0,0) is taken as the default origin.
- xaxis, yaxis, and zaxis specify the axis for rotation.
- angle specifies the rotation angle in degrees.
- fix-transform is an optional argument that allows the transforms to be fixed to the bodies. The default is #f (FALSE).
Example
; entity:rotate ; Create a cylinder. (define c (solid:cylinder (position 0 0 0) (position 10 10 10) 5)) ;; c ; Move the cylinder. (define move (entity:move c 10 0 0)) ;; move ; Scale the cylinder. (define scale1 (entity:scale c 3 1 1)) ;; scale1 ; Apply uniform scale. (define scale2 (entity:scale c 2)) ;; scale2 ; Rotate about (position 20 0 0) (vector 0 0 1) by 90 degrees. (define rotate1 (entity:rotate c 20 0 0 0 0 1 90)) ;; rotate1 ; Rotate about (position 0 0 0) (vector 0 0 1) by 90 degrees. (define rotate2 (entity:rotate c 0 0 1 90)) ;; rotate2 ; Reflect across (position 40 0 0) (vector 1 0 0). (define reflect1 (entity:reflect c 40 0 0 1 0 0)) ;; reflect1 ; Reflect across (position 0 0 0) (vector 1 0 0). (define reflect2 (entity:reflect c 1 0 0)) ;; reflect2