Add 3 point arc (#5722)
* bare minimum * start of segment util added * remove redundant handle * some probably buggy handling of arc handles, can fix later * probably bug implementation of update args, but data flow through is mostly there can fix bugs after * fix update for arc * fix math for center handle * fix up length indicator * tweak math * stub out xState logic for arc * more progress on adding point and click, implemented more of sketchLineHelper for arc * small unrelated tweak * fix up draft arc bugs * fix arc last click * fix draft segment animation and add comment * add draft point snapping for arcs * add helper stuff to arc * clone arc point and click as base for arc-three-point * rust change for arc three point * can draw three point arc * make arcTo editable * can add new three point arc, so long as it continues existing profile * get overlays working * make snap to for continuing profile work for three point arcs * add draft animation * tangent issue fix * action rename * tmp test fix up * fix silly bug * fix couple problems causing tests to fail * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * fix up * add delet segment test for new segments * update docs * draft segments should look right * add test for dragging new segment handles * arc tools can be chained now * make three point arc can start a new profile (not only extend existing paths) * add test for equiping and unequiping the tool plus drawing with it * fix console noise * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * clean up * update rust/docs * put toolbar mode check into fixture * do thing for lee * use TEST_COLORSs * fix colors * don't await file write * remove commented code * remove unneeded template strings * power to **2 * remove magic numbers * more string templates * some odd bits of clean up * arc should be enable in dev * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * add new simulation test * fix test code from kwark migration * issues Frank found * fix deleting half complete ark * fix * small fix on dele index * tsc post main merge * fix up snaping to profile start * add cross hari for three point arc * block snapping if it's the only segment * add tests for canceling arcTo halfway through --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
@ -5,6 +5,7 @@ import {
|
||||
onDragNumberCalculation,
|
||||
hasLeadingZero,
|
||||
hasDigitsLeftOfDecimal,
|
||||
isClockwise,
|
||||
} from './utils'
|
||||
import { SourceRange, topLevelRange } from '../lang/wasm'
|
||||
|
||||
@ -1253,3 +1254,56 @@ describe('testing onDragNumberCalculation', () => {
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('testing isClockwise', () => {
|
||||
it('returns for counter clockwise points', () => {
|
||||
// Points in clockwise order (rectangle)
|
||||
const clockwisePoints: [number, number][] = [
|
||||
[0, 0], // bottom-left
|
||||
[10, 0], // bottom-right
|
||||
[10, 10], // top-right
|
||||
[0, 10], // top-left
|
||||
]
|
||||
expect(isClockwise(clockwisePoints)).toBe(false)
|
||||
})
|
||||
|
||||
it('returns true for clockwise points', () => {
|
||||
// Points in counter-clockwise order (rectangle)
|
||||
const counterClockwisePoints: [number, number][] = [
|
||||
[0, 0], // bottom-left
|
||||
[0, 10], // top-left
|
||||
[10, 10], // top-right
|
||||
[10, 0], // bottom-right
|
||||
]
|
||||
expect(isClockwise(counterClockwisePoints)).toBe(true)
|
||||
})
|
||||
|
||||
it('returns false for less than 3 points', () => {
|
||||
expect(
|
||||
isClockwise([
|
||||
[0, 0],
|
||||
[10, 10],
|
||||
])
|
||||
).toBe(false)
|
||||
expect(isClockwise([[0, 0]])).toBe(false)
|
||||
expect(isClockwise([])).toBe(false)
|
||||
})
|
||||
|
||||
it('correctly identifies counter-clockwise triangle', () => {
|
||||
const clockwiseTriangle: [number, number][] = [
|
||||
[0, 0],
|
||||
[10, 0],
|
||||
[5, 10],
|
||||
]
|
||||
expect(isClockwise(clockwiseTriangle)).toBe(false)
|
||||
})
|
||||
|
||||
it('correctly identifies clockwise triangle', () => {
|
||||
const counterClockwiseTriangle: [number, number][] = [
|
||||
[0, 0],
|
||||
[5, 10],
|
||||
[10, 0],
|
||||
]
|
||||
expect(isClockwise(counterClockwiseTriangle)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user