Options
All
  • Public
  • Public/Protected
  • All
Menu

Class RotatedRectangle

Hierarchy

Index

Constructors

constructor

  • new RotatedRectangle(center: vec2, size: vec2, rotation: number): RotatedRectangle

Properties

center

center: vec2

rotation

rotation: number

size

size: vec2

Methods

Protected getObjectToSerialize

  • getObjectToSerialize(transform2d: mat2d, transform1d: number): any

minDistance

  • minDistance(target: vec2): number

serializeToUniforms

  • serializeToUniforms(uniforms: any, transform2d: mat2d, transform1d: number): void

Object literals

Static descriptor

descriptor: object

empty

empty: RotatedRectangle = new RotatedRectangle(vec2.create(), vec2.create(), 0)

shaderCombinationSteps

shaderCombinationSteps: number[] = [0, 1, 2, 3, 8, 16]

uniformCountMacroName

uniformCountMacroName: string = "ROTATED_RECTANGLE_COUNT"

propertyUniformMapping

propertyUniformMapping: object

bottomCenter

bottomCenter: string = "rotatedRectangleBottomCenters"

topCenter

topCenter: string = "rotatedRectangleTopCenters"

width

width: string = "rotatedRectangleWidths"

sdf

sdf: object

distanceFunctionName

distanceFunctionName: string = "rotatedRectangleMinDistance"

shader

shader: string = `uniform vec2 rotatedRectangleTopCenters[ROTATED_RECTANGLE_COUNT];uniform vec2 rotatedRectangleBottomCenters[ROTATED_RECTANGLE_COUNT];uniform float rotatedRectangleWidths[ROTATED_RECTANGLE_COUNT];float rotatedRectangleMinDistance(vec2 target, out float colorIndex) {colorIndex = 4.0;float minDistance = 1000.0;for (int i = 0; i < ROTATED_RECTANGLE_COUNT; i++) {vec2 top = rotatedRectangleTopCenters[i];vec2 bottom = rotatedRectangleBottomCenters[i];float height = length(bottom - top);vec2 d = (bottom - top) / height;vec2 q = (target - (top + bottom) * 0.5);q = mat2(d.x, -d.y, d.y, d.x) * q;q = abs(q) - vec2(height, rotatedRectangleWidths[i]) * 0.5;float dist = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0);minDistance = min(minDistance, dist);}return minDistance;}`