@mathwiz/ui-components 0.1.29 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +1 -1
  2. package/dist/components/HundredChart/HundredChart.css +8 -0
  3. package/dist/components/HundredChart/HundredChart.d.ts.map +1 -1
  4. package/dist/components/HundredChart/HundredChart.types.d.ts +29 -0
  5. package/dist/components/HundredChart/HundredChart.types.d.ts.map +1 -1
  6. package/dist/components/HundredChart/HundredChart.utils.d.ts +13 -1
  7. package/dist/components/HundredChart/HundredChart.utils.d.ts.map +1 -1
  8. package/dist/components/HundredChart/index.d.ts +2 -2
  9. package/dist/components/HundredChart/index.d.ts.map +1 -1
  10. package/dist/components/MathCardV2/DecimalNumberRecognitionSessionStore.d.ts +2 -2
  11. package/dist/components/MathCardV2/DecimalNumberRecognitionSessionStore.d.ts.map +1 -1
  12. package/dist/components/MathCardV2/ExplanationStep.d.ts +9 -0
  13. package/dist/components/MathCardV2/ExplanationStep.d.ts.map +1 -1
  14. package/dist/components/MathCardV2/MathCardV2.css +11 -4
  15. package/dist/components/MathCardV2/MathCardV2.d.ts.map +1 -1
  16. package/dist/components/MathCardV2/MathCardV2.types.d.ts +51 -1
  17. package/dist/components/MathCardV2/MathCardV2.types.d.ts.map +1 -1
  18. package/dist/components/MathCardV2/MathPracticeSessionStore.d.ts +3 -3
  19. package/dist/components/MathCardV2/MathPracticeSessionStore.d.ts.map +1 -1
  20. package/dist/components/MathCardV2/MathPracticeSessionTypes.d.ts +38 -18
  21. package/dist/components/MathCardV2/MathPracticeSessionTypes.d.ts.map +1 -1
  22. package/dist/components/MathCardV2/MathPracticeStoreContext.d.ts +3 -9
  23. package/dist/components/MathCardV2/MathPracticeStoreContext.d.ts.map +1 -1
  24. package/dist/components/MathCardV2/MathPracticeStoreHooks.d.ts +3 -2
  25. package/dist/components/MathCardV2/MathPracticeStoreHooks.d.ts.map +1 -1
  26. package/dist/components/MathCardV2/components/content/OptionGroupContent.d.ts +10 -0
  27. package/dist/components/MathCardV2/components/content/OptionGroupContent.d.ts.map +1 -0
  28. package/dist/components/MathCardV2/components/renderers/ContentRenderer.d.ts.map +1 -1
  29. package/dist/components/MathCardV2/hooks/useDataAdapter.d.ts.map +1 -1
  30. package/dist/components/MathCardV2/hooks/useMeetingProblemAdapter.d.ts.map +1 -1
  31. package/dist/components/MathCardV2/modules/ReviewModule/ReviewModule.d.ts.map +1 -1
  32. package/dist/components/MathCardV2/scenes/ExplanationScene/ExplanationScene.d.ts.map +1 -1
  33. package/dist/components/MathCardV2/scenes/QuestionScene/QuestionScene.css +18 -18
  34. package/dist/components/MathCardV2/scenes/QuestionScene/QuestionScene.d.ts.map +1 -1
  35. package/dist/components/OptionGroup/OptionCard.d.ts +11 -0
  36. package/dist/components/OptionGroup/OptionCard.d.ts.map +1 -0
  37. package/dist/components/OptionGroup/OptionCard.styles.d.ts +87 -0
  38. package/dist/components/OptionGroup/OptionCard.styles.d.ts.map +1 -0
  39. package/dist/components/OptionGroup/OptionGroup.d.ts +11 -0
  40. package/dist/components/OptionGroup/OptionGroup.d.ts.map +1 -0
  41. package/dist/components/OptionGroup/OptionGroup.types.d.ts +71 -0
  42. package/dist/components/OptionGroup/OptionGroup.types.d.ts.map +1 -0
  43. package/dist/components/OptionGroup/index.d.ts +5 -0
  44. package/dist/components/OptionGroup/index.d.ts.map +1 -0
  45. package/dist/components/StatBlock/StatBlock.css +330 -330
  46. package/dist/data/GeometryProblemAdapterV4/geometry-types.d.ts +119 -4
  47. package/dist/data/GeometryProblemAdapterV4/geometry-types.d.ts.map +1 -1
  48. package/dist/data/GeometryProblemAdapterV4/jsondata/parallelogram-revised.json +721 -721
  49. package/dist/data/GeometryProblemAdapterV4/jsondata/right-triangle-v4.json +594 -594
  50. package/dist/data/GeometryProblemAdapterV4/jsondata/trapezoid-v4-final.json +469 -469
  51. package/dist/data/GeometryProblemAdapterV4/jsondata/triangle-v4-final.json +1 -1
  52. package/dist/data/GeometryProblemAdapterV4/types.d.ts +2 -0
  53. package/dist/data/GeometryProblemAdapterV4/types.d.ts.map +1 -1
  54. package/dist/data/TriangleAdapterV3/config/embeddedConfigs.d.ts +96 -18
  55. package/dist/data/TriangleAdapterV3/config/embeddedConfigs.d.ts.map +1 -1
  56. package/dist/data/TriangleAdapterV3/config/index.d.ts +64 -12
  57. package/dist/data/TriangleAdapterV3/config/index.d.ts.map +1 -1
  58. package/dist/data/TriangleAdapterV3/core/syncAdapter.d.ts +5 -0
  59. package/dist/data/TriangleAdapterV3/core/syncAdapter.d.ts.map +1 -1
  60. package/dist/data/TriangleAdapterV3/transformers/hundredChartTransformer.d.ts +58 -0
  61. package/dist/data/TriangleAdapterV3/transformers/hundredChartTransformer.d.ts.map +1 -0
  62. package/dist/data/TriangleAdapterV3/transformers/index.d.ts +2 -0
  63. package/dist/data/TriangleAdapterV3/transformers/index.d.ts.map +1 -1
  64. package/dist/data/TriangleAdapterV3/transformers/optionGroupTransformer.d.ts +29 -0
  65. package/dist/data/TriangleAdapterV3/transformers/optionGroupTransformer.d.ts.map +1 -0
  66. package/dist/data/TriangleAdapterV3/types.d.ts +3 -0
  67. package/dist/data/TriangleAdapterV3/types.d.ts.map +1 -1
  68. package/dist/data/config/style-presets.json +27 -3
  69. package/dist/data/dataSchema/OpenAPI/openapi.json +5777 -5777
  70. package/dist/data/problems/factorProblemV4-backup.json +427 -0
  71. package/dist/data/problems/factorProblemV4.json +462 -0
  72. package/dist/data/problems/factorProblemV4_backup_20260311.json +436 -0
  73. package/dist/index.cjs +103 -100
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.ts +8 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.mjs +12091 -6033
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/mathwiz-ui.css +1 -1
  80. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.css +385 -0
  81. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.d.ts +29 -0
  82. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.d.ts.map +1 -0
  83. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.css +219 -0
  84. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.d.ts +15 -0
  85. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.d.ts.map +1 -0
  86. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.css +64 -0
  87. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.d.ts +11 -0
  88. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.d.ts.map +1 -0
  89. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.css +59 -0
  90. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.d.ts +14 -0
  91. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.d.ts.map +1 -0
  92. package/dist/pages/AreaGeometrySessionPage/index.d.ts +3 -1
  93. package/dist/pages/AreaGeometrySessionPage/index.d.ts.map +1 -1
  94. package/dist/pages/AreaGeometrySessionPage/types.d.ts +25 -0
  95. package/dist/pages/AreaGeometrySessionPage/types.d.ts.map +1 -1
  96. package/dist/style.css +1 -1
  97. package/dist/styles/mathcard-tokens.css +47 -5
  98. package/package.json +1 -1
@@ -1,595 +1,595 @@
1
- {
2
- "schema_version": "4.0.0",
3
- "config_version": "1.0.0",
4
- "math_prob_id": "mp-10506-0002-0001-G01-0001",
5
- "title": "直角三角形面积练习",
6
- "description": "通过单旋转策略练习直角三角形面积公式 A=½bh",
7
- "objective": "掌握直角三角形面积公式 A=½bh,掌握单旋转证明方法",
8
- "difficulty": 1,
9
- "grade_id": "g5",
10
- "unit_name": "三角形面积计算",
11
- "unit_id": 1050602,
12
- "lesson_name": "直角三角形的面积",
13
- "lesson_id": 105060201,
14
- "module_id": 1001,
15
- "skill_description": "已知直角三角形的底和高,求三角形面积",
16
- "skill_item_id": "s-105-06-0001",
17
- "skill_id": 1001,
18
- "score": 2,
19
- "knowledge_points": [
20
- "三角形面积公式 A=½bh",
21
- "直角三角形单旋转证明",
22
- "矩形与三角形面积关系"
23
- ],
24
- "metadata": {
25
- "topic": "直角三角形面积计算",
26
- "skill": "直角三角形面积求解技能",
27
- "tags": [
28
- "直角三角形",
29
- "单旋转策略",
30
- "三角形面积公式"
31
- ],
32
- "version": "1.0.0",
33
- "author": "chen-hui",
34
- "strategy": "single_rotation_visual_proof"
35
- },
36
- "basic_info": {
37
- "question": "What is the area of the triangle?",
38
- "answerUnit": "square inches",
39
- "shape": "right_triangle",
40
- "base": 8,
41
- "height": 6,
42
- "baseUnit": "inches",
43
- "heightUnit": "inches",
44
- "originX": 2,
45
- "originY": 2,
46
- "unit": "square inches",
47
- "variables": {
48
- "b": 8,
49
- "h": 6,
50
- "answer": 24
51
- }
52
- },
53
- "geometry_shapes": {
54
- "right_triangle": {
55
- "id": "right_triangle",
56
- "type": "polygon",
57
- "vertices": [
58
- {
59
- "$ref": "point_a"
60
- },
61
- {
62
- "$ref": "point_b"
63
- },
64
- {
65
- "$ref": "point_c"
66
- }
67
- ],
68
- "withLabel": true,
69
- "styleRef": "primary"
70
- },
71
- "right_triangle_copy": {
72
- "id": "right_triangle_copy",
73
- "type": "polygon",
74
- "vertices": [
75
- {
76
- "$ref": "point_a_copy"
77
- },
78
- {
79
- "$ref": "point_b_copy"
80
- },
81
- {
82
- "$ref": "point_c_copy"
83
- }
84
- ]
85
- },
86
- "base_segment": {
87
- "id": "base_segment",
88
- "type": "segment",
89
- "endpoints": [
90
- {
91
- "$ref": "point_a"
92
- },
93
- {
94
- "$ref": "point_b"
95
- }
96
- ]
97
- },
98
- "height_segment": {
99
- "id": "height_segment",
100
- "type": "segment",
101
- "endpoints": [
102
- {
103
- "$ref": "point_a"
104
- },
105
- {
106
- "$ref": "point_c"
107
- }
108
- ]
109
- },
110
- "hypotenuse_segment": {
111
- "id": "hypotenuse_segment",
112
- "type": "segment",
113
- "endpoints": [
114
- {
115
- "$ref": "point_b"
116
- },
117
- {
118
- "$ref": "point_c"
119
- }
120
- ]
121
- },
122
- "rotation_center": {
123
- "id": "rotation_center",
124
- "type": "point",
125
- "position": {
126
- "x": 6,
127
- "y": 5
128
- },
129
- "name": "O"
130
- },
131
- "target_rectangle": {
132
- "id": "target_rectangle",
133
- "type": "polygon",
134
- "vertices": [
135
- {
136
- "$ref": "point_a"
137
- },
138
- {
139
- "$ref": "point_b"
140
- },
141
- {
142
- "$ref": "point_d"
143
- },
144
- {
145
- "$ref": "point_c_copy"
146
- }
147
- ]
148
- },
149
- "base_arrow": {
150
- "id": "base_arrow",
151
- "type": "segment",
152
- "endpoints": [
153
- {
154
- "x": 2,
155
- "y": 1.5
156
- },
157
- {
158
- "x": 10,
159
- "y": 1.5
160
- }
161
- ]
162
- },
163
- "height_arrow": {
164
- "id": "height_arrow",
165
- "type": "segment",
166
- "endpoints": [
167
- {
168
- "x": 1.5,
169
- "y": 2
170
- },
171
- {
172
- "x": 1.5,
173
- "y": 8
174
- }
175
- ]
176
- },
177
- "base_label_position": {
178
- "id": "base_label_position",
179
- "type": "point",
180
- "position": {
181
- "x": 6,
182
- "y": 1.2
183
- }
184
- },
185
- "height_label_position": {
186
- "id": "height_label_position",
187
- "type": "point",
188
- "position": {
189
- "x": 1.2,
190
- "y": 5
191
- }
192
- },
193
- "point_a": {
194
- "id": "point_a",
195
- "type": "point",
196
- "position": {
197
- "x": 2,
198
- "y": 2
199
- },
200
- "name": "A"
201
- },
202
- "point_b": {
203
- "id": "point_b",
204
- "type": "point",
205
- "position": {
206
- "x": 10,
207
- "y": 2
208
- },
209
- "name": "B"
210
- },
211
- "point_c": {
212
- "id": "point_c",
213
- "type": "point",
214
- "position": {
215
- "x": 2,
216
- "y": 8
217
- },
218
- "name": "C"
219
- },
220
- "point_a_copy": {
221
- "id": "point_a_copy",
222
- "type": "point",
223
- "position": {
224
- "x": 2,
225
- "y": 2
226
- },
227
- "name": "A'"
228
- },
229
- "point_b_copy": {
230
- "id": "point_b_copy",
231
- "type": "point",
232
- "position": {
233
- "x": 10,
234
- "y": 2
235
- },
236
- "name": "B'"
237
- },
238
- "point_c_copy": {
239
- "id": "point_c_copy",
240
- "type": "point",
241
- "position": {
242
- "x": 2,
243
- "y": 8
244
- },
245
- "name": "C'"
246
- },
247
- "point_d": {
248
- "id": "point_d",
249
- "type": "point",
250
- "position": {
251
- "x": 10,
252
- "y": 8
253
- },
254
- "name": "D"
255
- }
256
- },
257
- "layout": {
258
- "type": "card",
259
- "theme": "light",
260
- "renderer": {
261
- "showFormulaSteps": true,
262
- "interactiveAnimations": true,
263
- "validateAnswers": true,
264
- "keepAspectRatio": true
265
- }
266
- },
267
- "scenes": {
268
- "question": {
269
- "layout": {
270
- "layoutRef": "vertical"
271
- },
272
- "items": [
273
- {
274
- "type": "text",
275
- "content": "What is the area of the triangle?",
276
- "styleRef": "text_heading_large"
277
- },
278
- {
279
- "type": "graph",
280
- "boardRef": "default",
281
- "shapes": [
282
- {
283
- "id": "main_triangle",
284
- "type": "polygon",
285
- "geometryRef": "right_triangle",
286
- "styleRef": "primary"
287
- },
288
- {
289
- "id": "base_line",
290
- "type": "segment",
291
- "geometryRef": "base_segment",
292
- "styleRef": "base_highlight"
293
- },
294
- {
295
- "id": "height_line",
296
- "type": "segment",
297
- "geometryRef": "height_segment",
298
- "styleRef": "success"
299
- },
300
- {
301
- "id": "right_angle",
302
- "type": "angle",
303
- "centerRef": "point_a",
304
- "radius": 0.5,
305
- "styleRef": "highlight"
306
- },
307
- {
308
- "id": "base_label",
309
- "type": "text",
310
- "geometryRef": "base_label_position",
311
- "content": "8 inches",
312
- "styleRef": "label_error"
313
- },
314
- {
315
- "id": "height_label",
316
- "type": "text",
317
- "geometryRef": "height_label_position",
318
- "content": "6 inches",
319
- "styleRef": "text_primary"
320
- }
321
- ]
322
- },
323
- {
324
- "type": "interactive",
325
- "component": "answer_input",
326
- "config": {
327
- "inputType": "number",
328
- "placeholder": "Enter area",
329
- "unit": "square inches",
330
- "submitButton": {
331
- "label": "Submit",
332
- "color": "$colors.success"
333
- }
334
- }
335
- }
336
- ]
337
- },
338
- "remember": {
339
- "layout": {
340
- "layoutRef": "vertical_centered"
341
- },
342
- "items": [
343
- {
344
- "type": "text",
345
- "content": "直角三角形面积公式",
346
- "styleRef": "text_primary"
347
- },
348
- {
349
- "type": "formula",
350
- "content": "A = \\frac{1}{2} \\times b \\times h",
351
- "parts": [
352
- "A = \\frac{1}{2} \\times b \\times h",
353
- "= \\frac{1}{2} \\times 8 \\times 6",
354
- "= \\frac{1}{2} \\times 48",
355
- "= 24"
356
- ],
357
- "styleRef": "text_primary"
358
- }
359
- ]
360
- },
361
- "solve": {
362
- "layout": {
363
- "layoutRef": "vertical_centered"
364
- },
365
- "items": [
366
- {
367
- "type": "text",
368
- "content": "单旋转变换演示",
369
- "styleRef": "text_primary"
370
- },
371
- {
372
- "type": "geometryTransform",
373
- "geometryTransformRef": "single_rotation_proof"
374
- }
375
- ]
376
- }
377
- },
378
- "explanation": {
379
- "steps": [
380
- {
381
- "id": "exp-step-1",
382
- "type": "instructionalStep",
383
- "title": "识别直角三角形的底和高",
384
- "description": "确定直角三角形的底边长度 b = 8 inches 和对应的高度 h = 6 inches。直角位于A点,底边AB水平放置,高AC垂直放置。",
385
- "chartConfig": {
386
- "type": "graph",
387
- "boardRef": "default",
388
- "shapes": [
389
- {
390
- "type": "polygon",
391
- "geometryRef": "right_triangle",
392
- "styleRef": "primary"
393
- },
394
- {
395
- "type": "segment",
396
- "geometryRef": "base_segment",
397
- "styleRef": "error"
398
- },
399
- {
400
- "type": "segment",
401
- "geometryRef": "height_segment",
402
- "styleRef": "success"
403
- },
404
- {
405
- "id": "base-label",
406
- "type": "text",
407
- "position": {
408
- "x": 6,
409
- "y": 1.4
410
- },
411
- "content": "b = 8 inches",
412
- "styleRef": "label_error"
413
- },
414
- {
415
- "id": "height-label",
416
- "type": "text",
417
- "position": {
418
- "x": 1.3,
419
- "y": 5
420
- },
421
- "content": "h = 6 inches",
422
- "styleRef": "text_primary"
423
- }
424
- ]
425
- }
426
- },
427
- {
428
- "id": "exp-step-2",
429
- "type": "instructionalStep",
430
- "title": "单旋转策略:围绕斜边中点旋转",
431
- "description": "将直角三角形围绕斜边BC的中点O旋转180度。旋转中心O位于斜边BC的中点,坐标为(6, 5)。旋转后,三角形副本将与原三角形组成一个矩形。",
432
- "chartConfig": {
433
- "type": "graph",
434
- "boardRef": "default",
435
- "shapes": [
436
- {
437
- "type": "polygon",
438
- "geometryRef": "right_triangle",
439
- "styleRef": "primary"
440
- },
441
- {
442
- "type": "segment",
443
- "geometryRef": "hypotenuse_segment",
444
- "styleRef": "dashed"
445
- },
446
- {
447
- "type": "point",
448
- "geometryRef": "rotation_center",
449
- "styleRef": "error",
450
- "size": 4
451
- }
452
- ]
453
- }
454
- },
455
- {
456
- "id": "exp-step-3",
457
- "type": "instructionalStep",
458
- "title": "刚体旋转形成矩形",
459
- "description": "直角三角形围绕斜边中点旋转180度,形成对应的矩形。旋转过程中三角形保持其形状和大小不变(刚体旋转)。",
460
- "chartConfig": {
461
- "type": "geometryTransform",
462
- "geometryTransformRef": "single_rotation_proof"
463
- }
464
- },
465
- {
466
- "id": "exp-step-4",
467
- "type": "instructionalStep",
468
- "title": "推导面积公式",
469
- "description": "旋转后形成的矩形面积为 b × h = 8 × 6 = 48 square inches。直角三角形面积是矩形面积的一半,即 A = ½ × b × h = 24 square inches。",
470
- "chartConfig": {
471
- "type": "graph",
472
- "boardRef": "default",
473
- "shapes": [
474
- {
475
- "type": "polygon",
476
- "geometryRef": "target_rectangle",
477
- "styleRef": "primary"
478
- },
479
- {
480
- "type": "polygon",
481
- "geometryRef": "right_triangle",
482
- "styleRef": "primary"
483
- },
484
- {
485
- "type": "segment",
486
- "geometryRef": "base_segment",
487
- "styleRef": "error"
488
- },
489
- {
490
- "type": "segment",
491
- "geometryRef": "height_segment",
492
- "styleRef": "success"
493
- },
494
- {
495
- "type": "text",
496
- "position": {
497
- "x": 6,
498
- "y": 1.2
499
- },
500
- "content": "Base = 8 inches",
501
- "styleRef": "secondary"
502
- },
503
- {
504
- "type": "text",
505
- "position": {
506
- "x": 1.2,
507
- "y": 5
508
- },
509
- "content": "Height = 6 inches",
510
- "styleRef": "secondary"
511
- }
512
- ]
513
- }
514
- }
515
- ]
516
- },
517
- "answer_info": {
518
- "value": 24,
519
- "unit": "square inches",
520
- "type": "number",
521
- "tolerance": 0.1,
522
- "validation": {
523
- "type": "exact",
524
- "allowPartial": false
525
- },
526
- "explanation_text": "三角形面积 = ½ × 底 × 高 = ½ × 8inches × 6inches = 24 square inches",
527
- "solution_steps": [
528
- "识别直角三角形的底和高",
529
- "应用面积公式 A = ½ × b × h",
530
- "代入数值:A = ½ × 8 × 6",
531
- "计算:A = ½ × 48 = 24",
532
- "添加单位:24 square inches"
533
- ]
534
- },
535
- "created_at": "2026-03-04T10:00:00Z",
536
- "updated_at": "2026-03-04T10:00:00Z",
537
- "geometry_transform_configs": {
538
- "single_rotation_proof": {
539
- "id": "single_rotation_proof",
540
- "description": "单旋转几何证明策略(直角三角形)",
541
- "base": 8,
542
- "height": 6,
543
- "unit": "inches",
544
- "strategy": "single_rotation",
545
- "shapes": {
546
- "static": [
547
- {
548
- "id": "main_triangle",
549
- "type": "polygon",
550
- "geometryRef": "right_triangle",
551
- "styleRef": "primary",
552
- "appearanceRef": "always_visible"
553
- },
554
- {
555
- "id": "rotation_center_point",
556
- "type": "point",
557
- "geometryRef": "rotation_center",
558
- "styleRef": "rotation_center_style",
559
- "appearanceRef": "always_visible"
560
- }
561
- ],
562
- "animated": [
563
- {
564
- "id": "right_triangle_copy",
565
- "type": "polygon",
566
- "geometryRef": "right_triangle_copy",
567
- "styleRef": "highlight",
568
- "appearanceRef": "fade_in"
569
- }
570
- ]
571
- },
572
- "transform": {
573
- "transformRef": "right_rotation"
574
- },
575
- "boardRef": "default",
576
- "sliderRef": "slider_horizontal"
577
- }
578
- },
579
- "transform_definitions": {
580
- "right_rotation": {
581
- "id": "right_rotation",
582
- "type": "rotation",
583
- "config": {
584
- "center": {
585
- "x": 6,
586
- "y": 5
587
- },
588
- "startAngle": 0,
589
- "endAngle": 3.14159,
590
- "direction": "clockwise"
591
- },
592
- "targetGroup": "right_triangle_copy"
593
- }
594
- }
1
+ {
2
+ "schema_version": "4.0.0",
3
+ "config_version": "1.0.0",
4
+ "math_prob_id": "mp-10506-0002-0001-G01-0001",
5
+ "title": "直角三角形面积练习",
6
+ "description": "通过单旋转策略练习直角三角形面积公式 A=½bh",
7
+ "objective": "掌握直角三角形面积公式 A=½bh,掌握单旋转证明方法",
8
+ "difficulty": 1,
9
+ "grade_id": "g5",
10
+ "unit_name": "三角形面积计算",
11
+ "unit_id": 1050602,
12
+ "lesson_name": "直角三角形的面积",
13
+ "lesson_id": 105060201,
14
+ "module_id": 1001,
15
+ "skill_description": "已知直角三角形的底和高,求三角形面积",
16
+ "skill_item_id": "s-105-06-0001",
17
+ "skill_id": 1001,
18
+ "score": 2,
19
+ "knowledge_points": [
20
+ "三角形面积公式 A=½bh",
21
+ "直角三角形单旋转证明",
22
+ "矩形与三角形面积关系"
23
+ ],
24
+ "metadata": {
25
+ "topic": "直角三角形面积计算",
26
+ "skill": "直角三角形面积求解技能",
27
+ "tags": [
28
+ "直角三角形",
29
+ "单旋转策略",
30
+ "三角形面积公式"
31
+ ],
32
+ "version": "1.0.0",
33
+ "author": "chen-hui",
34
+ "strategy": "single_rotation_visual_proof"
35
+ },
36
+ "basic_info": {
37
+ "question": "What is the area of the triangle?",
38
+ "answerUnit": "square inches",
39
+ "shape": "right_triangle",
40
+ "base": 8,
41
+ "height": 6,
42
+ "baseUnit": "inches",
43
+ "heightUnit": "inches",
44
+ "originX": 2,
45
+ "originY": 2,
46
+ "unit": "square inches",
47
+ "variables": {
48
+ "b": 8,
49
+ "h": 6,
50
+ "answer": 24
51
+ }
52
+ },
53
+ "geometry_shapes": {
54
+ "right_triangle": {
55
+ "id": "right_triangle",
56
+ "type": "polygon",
57
+ "vertices": [
58
+ {
59
+ "$ref": "point_a"
60
+ },
61
+ {
62
+ "$ref": "point_b"
63
+ },
64
+ {
65
+ "$ref": "point_c"
66
+ }
67
+ ],
68
+ "withLabel": true,
69
+ "styleRef": "primary"
70
+ },
71
+ "right_triangle_copy": {
72
+ "id": "right_triangle_copy",
73
+ "type": "polygon",
74
+ "vertices": [
75
+ {
76
+ "$ref": "point_a_copy"
77
+ },
78
+ {
79
+ "$ref": "point_b_copy"
80
+ },
81
+ {
82
+ "$ref": "point_c_copy"
83
+ }
84
+ ]
85
+ },
86
+ "base_segment": {
87
+ "id": "base_segment",
88
+ "type": "segment",
89
+ "endpoints": [
90
+ {
91
+ "$ref": "point_a"
92
+ },
93
+ {
94
+ "$ref": "point_b"
95
+ }
96
+ ]
97
+ },
98
+ "height_segment": {
99
+ "id": "height_segment",
100
+ "type": "segment",
101
+ "endpoints": [
102
+ {
103
+ "$ref": "point_a"
104
+ },
105
+ {
106
+ "$ref": "point_c"
107
+ }
108
+ ]
109
+ },
110
+ "hypotenuse_segment": {
111
+ "id": "hypotenuse_segment",
112
+ "type": "segment",
113
+ "endpoints": [
114
+ {
115
+ "$ref": "point_b"
116
+ },
117
+ {
118
+ "$ref": "point_c"
119
+ }
120
+ ]
121
+ },
122
+ "rotation_center": {
123
+ "id": "rotation_center",
124
+ "type": "point",
125
+ "position": {
126
+ "x": 6,
127
+ "y": 5
128
+ },
129
+ "name": "O"
130
+ },
131
+ "target_rectangle": {
132
+ "id": "target_rectangle",
133
+ "type": "polygon",
134
+ "vertices": [
135
+ {
136
+ "$ref": "point_a"
137
+ },
138
+ {
139
+ "$ref": "point_b"
140
+ },
141
+ {
142
+ "$ref": "point_d"
143
+ },
144
+ {
145
+ "$ref": "point_c_copy"
146
+ }
147
+ ]
148
+ },
149
+ "base_arrow": {
150
+ "id": "base_arrow",
151
+ "type": "segment",
152
+ "endpoints": [
153
+ {
154
+ "x": 2,
155
+ "y": 1.5
156
+ },
157
+ {
158
+ "x": 10,
159
+ "y": 1.5
160
+ }
161
+ ]
162
+ },
163
+ "height_arrow": {
164
+ "id": "height_arrow",
165
+ "type": "segment",
166
+ "endpoints": [
167
+ {
168
+ "x": 1.5,
169
+ "y": 2
170
+ },
171
+ {
172
+ "x": 1.5,
173
+ "y": 8
174
+ }
175
+ ]
176
+ },
177
+ "base_label_position": {
178
+ "id": "base_label_position",
179
+ "type": "point",
180
+ "position": {
181
+ "x": 6,
182
+ "y": 1.2
183
+ }
184
+ },
185
+ "height_label_position": {
186
+ "id": "height_label_position",
187
+ "type": "point",
188
+ "position": {
189
+ "x": 1.2,
190
+ "y": 5
191
+ }
192
+ },
193
+ "point_a": {
194
+ "id": "point_a",
195
+ "type": "point",
196
+ "position": {
197
+ "x": 2,
198
+ "y": 2
199
+ },
200
+ "name": "A"
201
+ },
202
+ "point_b": {
203
+ "id": "point_b",
204
+ "type": "point",
205
+ "position": {
206
+ "x": 10,
207
+ "y": 2
208
+ },
209
+ "name": "B"
210
+ },
211
+ "point_c": {
212
+ "id": "point_c",
213
+ "type": "point",
214
+ "position": {
215
+ "x": 2,
216
+ "y": 8
217
+ },
218
+ "name": "C"
219
+ },
220
+ "point_a_copy": {
221
+ "id": "point_a_copy",
222
+ "type": "point",
223
+ "position": {
224
+ "x": 2,
225
+ "y": 2
226
+ },
227
+ "name": "A'"
228
+ },
229
+ "point_b_copy": {
230
+ "id": "point_b_copy",
231
+ "type": "point",
232
+ "position": {
233
+ "x": 10,
234
+ "y": 2
235
+ },
236
+ "name": "B'"
237
+ },
238
+ "point_c_copy": {
239
+ "id": "point_c_copy",
240
+ "type": "point",
241
+ "position": {
242
+ "x": 2,
243
+ "y": 8
244
+ },
245
+ "name": "C'"
246
+ },
247
+ "point_d": {
248
+ "id": "point_d",
249
+ "type": "point",
250
+ "position": {
251
+ "x": 10,
252
+ "y": 8
253
+ },
254
+ "name": "D"
255
+ }
256
+ },
257
+ "layout": {
258
+ "type": "card",
259
+ "theme": "light",
260
+ "renderer": {
261
+ "showFormulaSteps": true,
262
+ "interactiveAnimations": true,
263
+ "validateAnswers": true,
264
+ "keepAspectRatio": true
265
+ }
266
+ },
267
+ "scenes": {
268
+ "question": {
269
+ "layout": {
270
+ "layoutRef": "vertical"
271
+ },
272
+ "items": [
273
+ {
274
+ "type": "text",
275
+ "content": "What is the area of the triangle?",
276
+ "styleRef": "text_heading_large"
277
+ },
278
+ {
279
+ "type": "graph",
280
+ "boardRef": "default",
281
+ "shapes": [
282
+ {
283
+ "id": "main_triangle",
284
+ "type": "polygon",
285
+ "geometryRef": "right_triangle",
286
+ "styleRef": "primary"
287
+ },
288
+ {
289
+ "id": "base_line",
290
+ "type": "segment",
291
+ "geometryRef": "base_segment",
292
+ "styleRef": "base_highlight"
293
+ },
294
+ {
295
+ "id": "height_line",
296
+ "type": "segment",
297
+ "geometryRef": "height_segment",
298
+ "styleRef": "success"
299
+ },
300
+ {
301
+ "id": "right_angle",
302
+ "type": "angle",
303
+ "centerRef": "point_a",
304
+ "radius": 0.5,
305
+ "styleRef": "highlight"
306
+ },
307
+ {
308
+ "id": "base_label",
309
+ "type": "text",
310
+ "geometryRef": "base_label_position",
311
+ "content": "8 inches",
312
+ "styleRef": "label_error"
313
+ },
314
+ {
315
+ "id": "height_label",
316
+ "type": "text",
317
+ "geometryRef": "height_label_position",
318
+ "content": "6 inches",
319
+ "styleRef": "text_primary"
320
+ }
321
+ ]
322
+ },
323
+ {
324
+ "type": "interactive",
325
+ "component": "answer_input",
326
+ "config": {
327
+ "inputType": "number",
328
+ "placeholder": "Enter area",
329
+ "unit": "square inches",
330
+ "submitButton": {
331
+ "label": "Submit",
332
+ "color": "$colors.success"
333
+ }
334
+ }
335
+ }
336
+ ]
337
+ },
338
+ "remember": {
339
+ "layout": {
340
+ "layoutRef": "vertical_centered"
341
+ },
342
+ "items": [
343
+ {
344
+ "type": "text",
345
+ "content": "直角三角形面积公式",
346
+ "styleRef": "text_primary"
347
+ },
348
+ {
349
+ "type": "formula",
350
+ "content": "A = \\frac{1}{2} \\times b \\times h",
351
+ "parts": [
352
+ "A = \\frac{1}{2} \\times b \\times h",
353
+ "= \\frac{1}{2} \\times 8 \\times 6",
354
+ "= \\frac{1}{2} \\times 48",
355
+ "= 24"
356
+ ],
357
+ "styleRef": "text_primary"
358
+ }
359
+ ]
360
+ },
361
+ "solve": {
362
+ "layout": {
363
+ "layoutRef": "vertical_centered"
364
+ },
365
+ "items": [
366
+ {
367
+ "type": "text",
368
+ "content": "单旋转变换演示",
369
+ "styleRef": "text_primary"
370
+ },
371
+ {
372
+ "type": "geometryTransform",
373
+ "geometryTransformRef": "single_rotation_proof"
374
+ }
375
+ ]
376
+ }
377
+ },
378
+ "explanation": {
379
+ "steps": [
380
+ {
381
+ "id": "exp-step-1",
382
+ "type": "instructionalStep",
383
+ "title": "识别直角三角形的底和高",
384
+ "description": "确定直角三角形的底边长度 b = 8 inches 和对应的高度 h = 6 inches。直角位于A点,底边AB水平放置,高AC垂直放置。",
385
+ "chartConfig": {
386
+ "type": "graph",
387
+ "boardRef": "default",
388
+ "shapes": [
389
+ {
390
+ "type": "polygon",
391
+ "geometryRef": "right_triangle",
392
+ "styleRef": "primary"
393
+ },
394
+ {
395
+ "type": "segment",
396
+ "geometryRef": "base_segment",
397
+ "styleRef": "error"
398
+ },
399
+ {
400
+ "type": "segment",
401
+ "geometryRef": "height_segment",
402
+ "styleRef": "success"
403
+ },
404
+ {
405
+ "id": "base-label",
406
+ "type": "text",
407
+ "position": {
408
+ "x": 6,
409
+ "y": 1.4
410
+ },
411
+ "content": "b = 8 inches",
412
+ "styleRef": "label_error"
413
+ },
414
+ {
415
+ "id": "height-label",
416
+ "type": "text",
417
+ "position": {
418
+ "x": 1.3,
419
+ "y": 5
420
+ },
421
+ "content": "h = 6 inches",
422
+ "styleRef": "text_primary"
423
+ }
424
+ ]
425
+ }
426
+ },
427
+ {
428
+ "id": "exp-step-2",
429
+ "type": "instructionalStep",
430
+ "title": "单旋转策略:围绕斜边中点旋转",
431
+ "description": "将直角三角形围绕斜边BC的中点O旋转180度。旋转中心O位于斜边BC的中点,坐标为(6, 5)。旋转后,三角形副本将与原三角形组成一个矩形。",
432
+ "chartConfig": {
433
+ "type": "graph",
434
+ "boardRef": "default",
435
+ "shapes": [
436
+ {
437
+ "type": "polygon",
438
+ "geometryRef": "right_triangle",
439
+ "styleRef": "primary"
440
+ },
441
+ {
442
+ "type": "segment",
443
+ "geometryRef": "hypotenuse_segment",
444
+ "styleRef": "dashed"
445
+ },
446
+ {
447
+ "type": "point",
448
+ "geometryRef": "rotation_center",
449
+ "styleRef": "error",
450
+ "size": 4
451
+ }
452
+ ]
453
+ }
454
+ },
455
+ {
456
+ "id": "exp-step-3",
457
+ "type": "instructionalStep",
458
+ "title": "刚体旋转形成矩形",
459
+ "description": "直角三角形围绕斜边中点旋转180度,形成对应的矩形。旋转过程中三角形保持其形状和大小不变(刚体旋转)。",
460
+ "chartConfig": {
461
+ "type": "geometryTransform",
462
+ "geometryTransformRef": "single_rotation_proof"
463
+ }
464
+ },
465
+ {
466
+ "id": "exp-step-4",
467
+ "type": "instructionalStep",
468
+ "title": "推导面积公式",
469
+ "description": "旋转后形成的矩形面积为 b × h = 8 × 6 = 48 square inches。直角三角形面积是矩形面积的一半,即 A = ½ × b × h = 24 square inches。",
470
+ "chartConfig": {
471
+ "type": "graph",
472
+ "boardRef": "default",
473
+ "shapes": [
474
+ {
475
+ "type": "polygon",
476
+ "geometryRef": "target_rectangle",
477
+ "styleRef": "primary"
478
+ },
479
+ {
480
+ "type": "polygon",
481
+ "geometryRef": "right_triangle",
482
+ "styleRef": "primary"
483
+ },
484
+ {
485
+ "type": "segment",
486
+ "geometryRef": "base_segment",
487
+ "styleRef": "error"
488
+ },
489
+ {
490
+ "type": "segment",
491
+ "geometryRef": "height_segment",
492
+ "styleRef": "success"
493
+ },
494
+ {
495
+ "type": "text",
496
+ "position": {
497
+ "x": 6,
498
+ "y": 1.2
499
+ },
500
+ "content": "Base = 8 inches",
501
+ "styleRef": "secondary"
502
+ },
503
+ {
504
+ "type": "text",
505
+ "position": {
506
+ "x": 1.2,
507
+ "y": 5
508
+ },
509
+ "content": "Height = 6 inches",
510
+ "styleRef": "secondary"
511
+ }
512
+ ]
513
+ }
514
+ }
515
+ ]
516
+ },
517
+ "answer_info": {
518
+ "value": 24,
519
+ "unit": "square inches",
520
+ "type": "number",
521
+ "tolerance": 0.1,
522
+ "validation": {
523
+ "type": "exact",
524
+ "allowPartial": false
525
+ },
526
+ "explanation_text": "三角形面积 = ½ × 底 × 高 = ½ × 8inches × 6inches = 24 square inches",
527
+ "solution_steps": [
528
+ "识别直角三角形的底和高",
529
+ "应用面积公式 A = ½ × b × h",
530
+ "代入数值:A = ½ × 8 × 6",
531
+ "计算:A = ½ × 48 = 24",
532
+ "添加单位:24 square inches"
533
+ ]
534
+ },
535
+ "created_at": "2026-03-04T10:00:00Z",
536
+ "updated_at": "2026-03-04T10:00:00Z",
537
+ "geometry_transform_configs": {
538
+ "single_rotation_proof": {
539
+ "id": "single_rotation_proof",
540
+ "description": "单旋转几何证明策略(直角三角形)",
541
+ "base": 8,
542
+ "height": 6,
543
+ "unit": "inches",
544
+ "strategy": "single_rotation",
545
+ "shapes": {
546
+ "static": [
547
+ {
548
+ "id": "main_triangle",
549
+ "type": "polygon",
550
+ "geometryRef": "right_triangle",
551
+ "styleRef": "primary",
552
+ "appearanceRef": "always_visible"
553
+ },
554
+ {
555
+ "id": "rotation_center_point",
556
+ "type": "point",
557
+ "geometryRef": "rotation_center",
558
+ "styleRef": "rotation_center_style",
559
+ "appearanceRef": "always_visible"
560
+ }
561
+ ],
562
+ "animated": [
563
+ {
564
+ "id": "right_triangle_copy",
565
+ "type": "polygon",
566
+ "geometryRef": "right_triangle_copy",
567
+ "styleRef": "highlight",
568
+ "appearanceRef": "fade_in"
569
+ }
570
+ ]
571
+ },
572
+ "transform": {
573
+ "transformRef": "right_rotation"
574
+ },
575
+ "boardRef": "default",
576
+ "sliderRef": "slider_horizontal"
577
+ }
578
+ },
579
+ "transform_definitions": {
580
+ "right_rotation": {
581
+ "id": "right_rotation",
582
+ "type": "rotation",
583
+ "config": {
584
+ "center": {
585
+ "x": 6,
586
+ "y": 5
587
+ },
588
+ "startAngle": 0,
589
+ "endAngle": 3.14159,
590
+ "direction": "clockwise"
591
+ },
592
+ "targetGroup": "right_triangle_copy"
593
+ }
594
+ }
595
595
  }