feat: стереометрия — усечённая пирамида, правильные многогранники, скрещивающиеся прямые
- Добавлены фигуры: усечённая пирамида, октаэдр, икосаэдр, додекаэдр - Формулы V, S, r_вп, R_оп для всех новых фигур - Инструмент '∠ скрещ. прям.' — угол и расстояние между скрещивающимися прямыми (4 клика) - Для икосаэдра/додекаэдра — THREE.IcosahedronGeometry/DodecahedronGeometry с извлечением рёбер - Вписанная/описанная сфера поддерживает октаэдр, икосаэдр, додекаэдр - Параметр n добавлен для пирамиды Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+13
-2
@@ -3559,6 +3559,10 @@
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('trunccone',this)">Усечённый конус</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('sphere',this)">Сфера</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('prism',this)">Призма</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('truncpyramid',this)">Усеч. пирамида</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('octahedron',this)">Октаэдр</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('icosahedron',this)">Икосаэдр</button>
|
||||
<button class="gp-btn stereo-fig-btn" onclick="setStereoFigure('dodecahedron',this)">Додекаэдр</button>
|
||||
</div>
|
||||
|
||||
<div class="gp-section-title">Параметры</div>
|
||||
@@ -3656,6 +3660,7 @@
|
||||
<button class="gp-btn" id="stereo-angle-lp-btn" onclick="stereoAngleMode('linePlane', this)">∠ прям.–пл.</button>
|
||||
<button class="gp-btn" id="stereo-angle-dih-btn" onclick="stereoAngleMode('dihedral', this)">∠ двугранный</button>
|
||||
<button class="gp-btn" id="stereo-angle-pp-btn" onclick="stereoAngleMode('pointPlane', this)">d(т<svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>пл)</button>
|
||||
<button class="gp-btn" id="stereo-angle-skew-btn" onclick="stereoAngleMode('skewLines', this)">∠ скрещ. прям.</button>
|
||||
<button class="gp-btn" id="stereo-angle-clear-btn" onclick="stereoAngleClear()">Очистить</button>
|
||||
</div>
|
||||
<div id="angle-hint" style="font-size:0.65rem;color:rgba(255,255,255,0.4);margin-bottom:4px"></div>
|
||||
@@ -3674,6 +3679,7 @@
|
||||
∠ прям.–пл.: 2 точки (прямая), затем грань<br>
|
||||
∠ двугранный: 2 точки общего ребра<br>
|
||||
d(т<svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>пл): точка, затем грань — перпендикуляр<br>
|
||||
∠ скрещ.: 4 точки — P1,P2 (пр.1), P3,P4 (пр.2)<br>
|
||||
Координаты: наведите на вершину
|
||||
</div>
|
||||
</div>
|
||||
@@ -8053,13 +8059,17 @@
|
||||
const STEREO_PARAM_MAP = {
|
||||
cube: ['a'],
|
||||
parallelepiped: ['a','b','c'],
|
||||
pyramid: ['a','h'],
|
||||
pyramid: ['a','n','h'],
|
||||
tetrahedron: ['a'],
|
||||
cylinder: ['r','h'],
|
||||
cone: ['r','h'],
|
||||
trunccone: ['R','r','h'],
|
||||
sphere: ['r'],
|
||||
prism: ['a','n','h'],
|
||||
truncpyramid: ['a','b','n','h'],
|
||||
octahedron: ['a'],
|
||||
icosahedron: ['a'],
|
||||
dodecahedron: ['a'],
|
||||
};
|
||||
|
||||
function _openStereo() {
|
||||
@@ -8167,7 +8177,7 @@
|
||||
|
||||
function _stereoDeactivateTools() {
|
||||
['stereo-measure-btn','stereo-point-btn','stereo-connect-btn',
|
||||
'stereo-angle-edge-btn','stereo-angle-lp-btn','stereo-angle-dih-btn','stereo-angle-pp-btn'].forEach(id => {
|
||||
'stereo-angle-edge-btn','stereo-angle-lp-btn','stereo-angle-dih-btn','stereo-angle-pp-btn','stereo-angle-skew-btn'].forEach(id => {
|
||||
document.getElementById(id)?.classList.remove('active');
|
||||
});
|
||||
if (stereoSim) {
|
||||
@@ -8216,6 +8226,7 @@
|
||||
linePlane: 'Кликните 2 точки (прямая), затем — грань',
|
||||
dihedral: 'Кликните 2 точки общего ребра двух граней',
|
||||
pointPlane: 'Кликните точку, затем — грань',
|
||||
skewLines: 'P1, P2 (прямая 1) → P3, P4 (прямая 2): угол и расстояние',
|
||||
};
|
||||
|
||||
function stereoAngleMode(mode, btn) {
|
||||
|
||||
Reference in New Issue
Block a user