-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathccc-TODO.txt
171 lines (128 loc) · 3.99 KB
/
ccc-TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
REFACTORING
- poly2/3:
- get_point() -> at()
- get_point3() -> at3()
- xy(), xyz()
- plane:
- refactor xy_quat, xyz_quat API
- better yet, reimplement with base vectors
- 3d.js: revisit var reuse / out discipline
- earcut3 ?
- plane_graph3 ?
- poly with holes:
- hit(): exclude holes
- hit_points() ?
- hit_edges() ?
ROOF EDITOR
- ??
FINISH FACE EDITOR
- ZOOM
- FLIP
- SELECT SECTION (MAX PLANE)
- MOVE WALL
- MOVE OPENING
FINISH PLAN EIDTOR
- SNAP WHEN MOVING FREELY
- SNAP MOVE BASED ON MEASURES
- ALLOW CHANGING DIRECTION WHILE RESIZING
- MOVE + RESIZE WHEN ANCHORED TO A WALL
- PROPORTIONAL MOVE vs RESIZE HIT AREAS WITH MIN & MAX
- CLICK-MOVE-CLICK DRAW MODE (ESC TO CANCEL)
WALL OFFSETING WITH OPENINGS
- METHOD 1 / GEOMETRIC:
- keep a parallel set of segs that are broken at openings
- find_comps() -- seg split can create islands
- extract_cycles() -- there should be no inner cycles
- except for basements and mansards which should have a stair.
- create_edges()
- METHOD 2 / RASTER:
- create clipping rects for openings before painting the walls.
- draw wall strokes with proper miter (extend the corners a little).
- draw openings over.
FINISH OPENINGS EDITOR
- ??
FINISH DEMO
- UNDO-REDO
- SAVE/LOAD TO LOCAL STORAGE
- TOUCH INPUT
BUGS
- hit_poly() - must ignore filaments
==============================================================================
- TODO: drag-move opening: pick the closest free range and clamp to it.
- TODO: drag-move opening:
- TODO: pick the closest wall
- go outside walls if no wall is close enough
- drag opening:
- constrain position to free space when moving and resizing
- resize by each end
- move outside walls on the empty space
- auto-shrink to fit free space on the wall + padding
- FINISH: scalable drawing
- TODO: zoom in/out/reset
- TODO: fixate scale while dragging
- TODO: constrain wall movement to multiple ranges
- TODO: constrian wall movement to min. length of shrinking walls.
- TODO: constrain wall movement to openings
- TODO: keep exterior walls aligned on the outside edge between storeys
- TODO: merge storey facade walls to form a continuous facade polygon.
- plan: draw below stories on the outside with faded dotted color.
- plan: draw ceiling contour from above stories with dotted line.
- draw facade shadow triangles.
- have objects draw themselves on plan and on facade.
- undo / redo
- save snapshot
- restore snapshot == make branch
- select object: opening
- properties popup
- door : flip v, flip h, resize 60..100
- window : select from list
- deselect object by clicking on empty space
- furniture:
- round dining table: 3, 4, 5 chairs
- rotate in multiples of 360/6, 360/8, 360/10
- square dining table: 2, 3, 4 chairs
- rotate in multiples of 45, 90
- align to walls
- rect dining table: 2, 4, 6, 8, 10, 12 chairs
- rotate in multiples of 45, 90
- align to walls
- bed: 90, 140, 160, 180 x 200
- align to walls
- desk: 50, 60, 70, 80 x 120, 140, 160, 200, custom
- rotate 45, 90
- align to walls
- fridge: normal, double
- align to walls
- kitchen countertop: follow the wall for I, L, U shape
- range: 1, 2, 4 burners
- sink: round, normal, double, normal+dripper
- act as wall for other things to align to
- kitchen island:
- range, sink: align to margins
- act as wall for other things to align to
- kitchen top cabinets
- dining chair
- armchair
- couch: 2, 3, L; a few styles
- washing machine
- toilet: align to wall, align to corner; few styles (in-wall, etc.)
- bathtub: corner, 140, .. ?
- shower: corner, square, rectangle; few styles
- align to corner or 3 walls
- bathroom sink: normal, large, small, corner
- radiator:
- align to walls
- outlet
- align to walls
- light fixture
- light switch
- cabinet: 40..60 x variable; doors: 30..60
- window editor
- number of panes: 1, 2, 3, 4, 5
- each pane: mobile or fixed
- thickness: normal, thin
- cabinet editor
- ??
- stairs:
-
- make everything work under rotation