Symbols overlay (#2033)
* start of overlay work
* add new icons
* add constraint symbols
* add three dots
* add primary colours
* refactor how we get constraint info for overlays
* refactor how we get constraint info for overlays
* get symbols working for tangential arc too
* extra data on constraint info
* add initial delete
* fix types and circular dep issue after rebase
* fix quirk with horz vert line overlays
* fix setup and tear down of overlays
* remove overlays that are too small
* throttle overlay updates and prove tests selecting html instead of hardcoded px coords
* initial show overaly on segment hover
* remove overlays when tool is equipped
* dounce overlay updates
* tsc
* make higlighting robust to small changes in source ranges
* replace with variable for unconstrained values, and improve styles for popover
* background tweak
* make overlays unconstrain inputs
* fix small regression
* write query for finding related tag references
* make delete segment safe
* typo
* un used imports
* test deleteSegmentFromPipeExpression
* add getConstraintInfo test
* test removeSingleConstraintInfo
* more tests
* tsc
* add tests for overlay buttons
* rename tests
* fmt
* better naming structure
* more reliablity
* more test tweaks
* fix selection test
* add delete segments with overlays tests
* dependant tag tests for segment delet
* typo
* test clean up
* fix some perf issus
* clean up
* clean up
* make things a little more dry
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger ci
* Make constraint hover popovers readable on light mode
* Touch up the new variable dialog
* Little touch-up to three-dot menu style
* fix highlight issue
* fmt
* use optional chain
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit be3d61e4a3
.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* disable var panel in sketch mode
* fix overlay tests after mergi in main
* test tweak
* try fix ubuntu
* fmt
* more test tweaks
* tweak
* tweaks
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Frank Noirot <frank@kittycad.io>
This commit is contained in:
@ -21,12 +21,28 @@ export function getLength(a: [number, number], b: [number, number]): number {
|
||||
return Math.sqrt(x * x + y * y)
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the angle in degrees between two points in a 2D space.
|
||||
* The angle is normalized to the range [-180, 180].
|
||||
*
|
||||
* @param a The first point as a tuple [x, y].
|
||||
* @param b The second point as a tuple [x, y].
|
||||
* @returns The normalized angle in degrees between point a and point b.
|
||||
*/
|
||||
export function getAngle(a: [number, number], b: [number, number]): number {
|
||||
const x = b[0] - a[0]
|
||||
const y = b[1] - a[1]
|
||||
return normaliseAngle((Math.atan2(y, x) * 180) / Math.PI)
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes an angle to the range [-180, 180].
|
||||
*
|
||||
* This function takes an angle in degrees and normalizes it so that the result is always within the range of -180 to 180 degrees. This is useful for ensuring consistent angle measurements where the direction (positive or negative) is significant.
|
||||
*
|
||||
* @param angle The angle in degrees to be normalized.
|
||||
* @returns The normalized angle in the range [-180, 180].
|
||||
*/
|
||||
export function normaliseAngle(angle: number): number {
|
||||
const result = ((angle % 360) + 360) % 360
|
||||
return result > 180 ? result - 360 : result
|
||||
|
Reference in New Issue
Block a user