add other axis rotate functions

This commit is contained in:
Kurt Hutten IrevDev
2022-12-04 13:44:10 +11:00
parent 200f5b0b0a
commit 6f40d9b6b7
2 changed files with 11 additions and 5 deletions

View File

@ -106,7 +106,7 @@ export const executor = (
) )
_programMemory._sketch = result.programMemory._sketch _programMemory._sketch = result.programMemory._sketch
_programMemory.root[variableName] = result.currentPath _programMemory.root[variableName] = result.currentPath
} else if ('rx' === fnName) { } else if ('rx' === fnName || 'ry' === fnName || 'rz' === fnName) {
const sketch = declaration.init.arguments[1] const sketch = declaration.init.arguments[1]
if(sketch.type !== 'Identifier') throw new Error('rx must be called with an identifier') if(sketch.type !== 'Identifier') throw new Error('rx must be called with an identifier')
const sketchVal = _programMemory.root[sketch.name] const sketchVal = _programMemory.root[sketch.name]
@ -218,7 +218,7 @@ function executePipeBody(body: PipeExpression['body'], programMemory: ProgramMem
} }
throw new Error('Invalid argument type') throw new Error('Invalid argument type')
}) })
if (fnName === 'rx') { if ('rx' === fnName || 'ry' === fnName || 'rz' === fnName) {
const result = sketchFns[fnName]( const result = sketchFns[fnName](
programMemory, programMemory,
[expression.start, expression.end], [expression.start, expression.end],

View File

@ -203,7 +203,13 @@ export const sketchFns = {
currentPath, currentPath,
} }
}, },
rx: ( rx: RotateOnAxis([1, 0, 0]),
ry: RotateOnAxis([0, 1, 0]),
rz: RotateOnAxis([0, 0, 1]),
}
function RotateOnAxis(axisMultiplier: [number, number, number]) {
return (
programMemory: ProgramMemory, programMemory: ProgramMemory,
sourceRange: SourceRange, sourceRange: SourceRange,
rotationD: number, rotationD: number,
@ -212,10 +218,10 @@ export const sketchFns = {
const rotationR = rotationD * (Math.PI / 180) const rotationR = rotationD * (Math.PI / 180)
return { return {
type: 'transform', type: 'transform',
rotation: [rotationR, 0, 0], rotation: axisMultiplier.map((axis) => axis * rotationR) as Rotation3,
transform: [0, 0, 0], transform: [0, 0, 0],
sketch, sketch,
sourceRange, sourceRange,
} }
}, }
} }