Skip to content
Snippets Groups Projects
Commit 406307a4 authored by Alexander Rose's avatar Alexander Rose
Browse files

add radiusScale param to orientation measurement

parent 56345b50
No related branches found
No related tags found
No related merge requests found
/** /**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
* *
* @author Alexander Rose <alexander.rose@weirdbyte.de> * @author Alexander Rose <alexander.rose@weirdbyte.de>
*/ */
...@@ -48,7 +48,7 @@ namespace Axes3D { ...@@ -48,7 +48,7 @@ namespace Axes3D {
return out; return out;
} }
const tmpTransformMat3 = Mat3.zero(); const tmpTransformMat3 = Mat3();
/** Transform axes with a Mat4 */ /** Transform axes with a Mat4 */
export function transform(out: Axes3D, a: Axes3D, m: Mat4): Axes3D { export function transform(out: Axes3D, a: Axes3D, m: Mat4): Axes3D {
Vec3.transformMat4(out.origin, a.origin, m); Vec3.transformMat4(out.origin, a.origin, m);
...@@ -58,6 +58,13 @@ namespace Axes3D { ...@@ -58,6 +58,13 @@ namespace Axes3D {
Vec3.transformMat3(out.dirC, a.dirC, n); Vec3.transformMat3(out.dirC, a.dirC, n);
return out; return out;
} }
export function scale(out: Axes3D, a: Axes3D, scale: number): Axes3D {
Vec3.scale(out.dirA, a.dirA, scale);
Vec3.scale(out.dirB, a.dirB, scale);
Vec3.scale(out.dirC, a.dirC, scale);
return out;
}
} }
export { Axes3D }; export { Axes3D };
\ No newline at end of file
...@@ -27,7 +27,8 @@ export interface OrientationData { ...@@ -27,7 +27,8 @@ export interface OrientationData {
const SharedParams = { const SharedParams = {
color: PD.Color(ColorNames.orange), color: PD.Color(ColorNames.orange),
scale: PD.Numeric(2, { min: 0.1, max: 10, step: 0.1 }) scaleFactor: PD.Numeric(1, { min: 0.1, max: 10, step: 0.1 }),
radiusScale: PD.Numeric(2, { min: 0.1, max: 10, step: 0.1 })
}; };
const AxesParams = { const AxesParams = {
...@@ -59,8 +60,6 @@ export const OrientationParams = { ...@@ -59,8 +60,6 @@ export const OrientationParams = {
...BoxParams, ...BoxParams,
...EllipsoidParams, ...EllipsoidParams,
visuals: PD.MultiSelect(['box'], PD.objectToOptions(OrientationVisuals)), visuals: PD.MultiSelect(['box'], PD.objectToOptions(OrientationVisuals)),
color: PD.Color(ColorNames.orange),
scale: PD.Numeric(2, { min: 0.1, max: 5, step: 0.1 })
}; };
export type OrientationParams = typeof OrientationParams export type OrientationParams = typeof OrientationParams
export type OrientationProps = PD.Values<OrientationParams> export type OrientationProps = PD.Values<OrientationParams>
...@@ -75,9 +74,10 @@ function getAxesName(locis: StructureElement.Loci[]) { ...@@ -75,9 +74,10 @@ function getAxesName(locis: StructureElement.Loci[]) {
function buildAxesMesh(data: OrientationData, props: OrientationProps, mesh?: Mesh): Mesh { function buildAxesMesh(data: OrientationData, props: OrientationProps, mesh?: Mesh): Mesh {
const state = MeshBuilder.createState(256, 128, mesh); const state = MeshBuilder.createState(256, 128, mesh);
const principalAxes = StructureElement.Loci.getPrincipalAxesMany(data.locis); const principalAxes = StructureElement.Loci.getPrincipalAxesMany(data.locis);
Axes3D.scale(principalAxes.momentsAxes, principalAxes.momentsAxes, props.scaleFactor);
state.currentGroup = 0; state.currentGroup = 0;
addAxes(state, principalAxes.momentsAxes, props.scale, 2, 20); addAxes(state, principalAxes.momentsAxes, props.radiusScale, 2, 20);
return MeshBuilder.getMesh(state); return MeshBuilder.getMesh(state);
} }
...@@ -97,9 +97,10 @@ function getBoxName(locis: StructureElement.Loci[]) { ...@@ -97,9 +97,10 @@ function getBoxName(locis: StructureElement.Loci[]) {
function buildBoxMesh(data: OrientationData, props: OrientationProps, mesh?: Mesh): Mesh { function buildBoxMesh(data: OrientationData, props: OrientationProps, mesh?: Mesh): Mesh {
const state = MeshBuilder.createState(256, 128, mesh); const state = MeshBuilder.createState(256, 128, mesh);
const principalAxes = StructureElement.Loci.getPrincipalAxesMany(data.locis); const principalAxes = StructureElement.Loci.getPrincipalAxesMany(data.locis);
Axes3D.scale(principalAxes.boxAxes, principalAxes.boxAxes, props.scaleFactor);
state.currentGroup = 0; state.currentGroup = 0;
addOrientedBox(state, principalAxes.boxAxes, props.scale, 2, 20); addOrientedBox(state, principalAxes.boxAxes, props.radiusScale, 2, 20);
return MeshBuilder.getMesh(state); return MeshBuilder.getMesh(state);
} }
...@@ -123,7 +124,7 @@ function buildEllipsoidMesh(data: OrientationData, props: OrientationProps, mesh ...@@ -123,7 +124,7 @@ function buildEllipsoidMesh(data: OrientationData, props: OrientationProps, mesh
const axes = principalAxes.boxAxes; const axes = principalAxes.boxAxes;
const { origin, dirA, dirB } = axes; const { origin, dirA, dirB } = axes;
const size = Axes3D.size(Vec3(), axes); const size = Axes3D.size(Vec3(), axes);
Vec3.scale(size, size, 0.5); Vec3.scale(size, size, 0.5 * props.scaleFactor);
const radiusScale = Vec3.create(size[2], size[1], size[0]); const radiusScale = Vec3.create(size[2], size[1], size[0]);
state.currentGroup = 0; state.currentGroup = 0;
......
...@@ -26,7 +26,7 @@ export interface PlaneData { ...@@ -26,7 +26,7 @@ export interface PlaneData {
const _PlaneParams = { const _PlaneParams = {
...Mesh.Params, ...Mesh.Params,
color: PD.Color(ColorNames.orange), color: PD.Color(ColorNames.orange),
scale: PD.Numeric(1, { min: 0.1, max: 10, step: 0.1 }) scaleFactor: PD.Numeric(1, { min: 0.1, max: 10, step: 0.1 }),
}; };
type _PlaneParams = typeof _PlaneParams type _PlaneParams = typeof _PlaneParams
...@@ -37,8 +37,6 @@ const PlaneVisuals = { ...@@ -37,8 +37,6 @@ const PlaneVisuals = {
export const PlaneParams = { export const PlaneParams = {
..._PlaneParams, ..._PlaneParams,
visuals: PD.MultiSelect(['plane'], PD.objectToOptions(PlaneVisuals)), visuals: PD.MultiSelect(['plane'], PD.objectToOptions(PlaneVisuals)),
color: PD.Color(ColorNames.orange),
scale: PD.Numeric(1, { min: 0.1, max: 5, step: 0.1 })
}; };
export type PlaneParams = typeof PlaneParams export type PlaneParams = typeof PlaneParams
export type PlaneProps = PD.Values<PlaneParams> export type PlaneProps = PD.Values<PlaneParams>
...@@ -61,7 +59,7 @@ function buildPlaneMesh(data: PlaneData, props: PlaneProps, mesh?: Mesh): Mesh { ...@@ -61,7 +59,7 @@ function buildPlaneMesh(data: PlaneData, props: PlaneProps, mesh?: Mesh): Mesh {
Vec3.add(tmpV, axes.origin, axes.dirC); Vec3.add(tmpV, axes.origin, axes.dirC);
Mat4.targetTo(tmpMat, tmpV, axes.origin, axes.dirB); Mat4.targetTo(tmpMat, tmpV, axes.origin, axes.dirB);
Mat4.scale(tmpMat, tmpMat, Axes3D.size(tmpV, axes)); Mat4.scale(tmpMat, tmpMat, Axes3D.size(tmpV, axes));
Mat4.scaleUniformly(tmpMat, tmpMat, props.scale); Mat4.scaleUniformly(tmpMat, tmpMat, props.scaleFactor);
Mat4.setTranslation(tmpMat, axes.origin); Mat4.setTranslation(tmpMat, axes.origin);
state.currentGroup = 0; state.currentGroup = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment