Создание трехмерных блоков javascript и svg

Кто-нибудь знает хорошую библиотеку для создания 3D-боксов SVG через javascript? Мне нужно изменить их размер в конфигураторе, но я не уверен, с чего начать.

Коробки будут выглядеть так: Создание трехмерных блоков javascript и svg

И учитывая A, B, C, я должен иметь возможность указать им размеры через 3 поля. Если бы у меня был один маленький пример, я бы смог его развить.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
332
1

Ответы 1

Я сомневаюсь, что есть библиотека специально для того, что вы хотите. Но это очень тривиальная вещь, связанная с SVG.

Вот рабочий образец для начала.

// A axis vector
var vx = 180;
var vy = 100;
// Get unit vector for A and B axes
var veclen = Math.sqrt(vx * vx + vy * vy);
vx /= veclen;
vy /= veclen;

// Add a change handler to all the input fields
document.querySelectorAll("input").forEach(function(elem) { elem.addEventListener("input", updateBox); });

// Call updateBox() once at the start to draw the initial box
updateBox();



function updateBox()
{
  var a = document.getElementById("a").value;
  var b = document.getElementById("b").value;
  var c = document.getElementById("c").value;

  // Get the line vector coordinates of the A and B edges
  var ax = a * vx;
  var ay = a * vy;
  var bx = b * vx;
  var by = b * vy;
  // (The c axis is just vertical, so we don't need to multiply by our vx,vy unit vector)

  // Update each of the box sides
  document.getElementById("bottom").setAttribute("points", [0,0, bx,-by, ax+bx,ay-by, ax,ay].join(","));
  document.getElementById("back").setAttribute("points", [bx,-by, bx,-by-c, bx+ax,-by+ay-c, bx+ax,-by+ay].join(","));
  document.getElementById("front").setAttribute("points", [ax,ay, ax,ay-c, ax+bx,ay-by-c, ax+bx,ay-by].join(","));

  // Finally, Update the SVG viewBox so that our whole box is visible
  var box = document.getElementById("box");
  var bbox = box.getBBox();
  var pad = 20;  // amount of padding around the box
  box.setAttribute("viewBox", [bbox.x-pad, bbox.y-pad, bbox.width+2*pad, bbox.height+2*pad].join(" "));
}
span + span { padding-left: 3em; }
input { width: 60px; }
svg {
  width: 500px;
  background-color: linen;
}

#bottom { fill: #787878; }
#back { fill: #9f9f9f; }
#front { fill: #b5b5b5; }
<p>
  <span>A <input type = "text" id = "a" value = "206"/></span>
  <span>B <input type = "text" id = "b" value = "328"/></span>
  <span>C <input type = "text" id = "c" value = "55"/></span>
</p>


<svg id = "box">
  <polygon id = "bottom" points = ""/>
  <polygon id = "back" points = ""/>
  <polygon id = "front" points = ""/>
</svg>

Большое спасибо @ paul-lebeau, но для меня очень важно прикрепить буквенную метку (A, B и C) к той стороне, которой она принадлежит, мне не удалось узнать, как установить метки в изменяемое положение с помощью сторону при обновлении значений полей. Не могли бы вы показать мне и это?

Daniel Ilaş 24.10.2018 22:56

Stack Overflow - это не бесплатный сервис для написания кода. SVG довольно легко изучить. Попробуйте сами.

Paul LeBeau 25.10.2018 08:02

как я могу связаться с вами наедине? У меня есть 3 кубика из 18 таких, с которыми я не могу справиться, потому что у них есть внутренние рамки. Сколько вы возьмете с меня за 3 таких хорошо сделанных коробки? Свяжитесь со мной лично, пожалуйста.

Daniel Ilaş 27.10.2018 00:29

На сайте есть контактный адрес электронной почты моего проекта OSS AndroidSVG.

Paul LeBeau 27.10.2018 10:06

Другие вопросы по теме