powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм рисования цилиндра
20 сообщений из 95, страница 4 из 4
Алгоритм рисования цилиндра
    #39467409
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пыщ.

Код: java
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.
class Cylinder extends Figure{
    
    public List<Point3D> point3DS = new ArrayList<>();

    public Cylinder(@Nonnull Point3D center1,@Nonnull Point3D center2, double height, double R, int proxyEdges){
        if (isEquals(center1,center2))
            throw new IllegalArgumentException("The centers are equals!");

        if (height < 0.0)
            throw new IllegalArgumentException("The height cannot be negative!");

        if (R < 0.0)
            throw new IllegalArgumentException("The radius cannot be negative!");

        if (proxyEdges <= 5)
            throw new IllegalArgumentException("The proxyEdges must be greather than 5");

        double step = 2.0 * PI / proxyEdges;

        // Draw primitive cylinder without basic transformations with (0,0,0), (0,0,height) centers
        // And rad = R

        for (double v = 0.0; v < 2.0 * PI; v += step) {
            double x = R * cos(v);
            double y = R * sin(v);
            point3DS.add(new Point3D(x, y, 0.0));
            point3DS.add(new Point3D(x, y, height));
        }
        
        // Apply basic transforms to become cylinder with center1, center1 
        
        // ....
        
    }
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467424
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА этот javascript-исходник ... он что на выходе дает? Я так и не понял.
mesh-объект
maytonГде камера? Автор вроде не говорил ничего о камерах?
суслика видишь?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467427
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилmaytonА этот javascript-исходник ... он что на выходе дает? Я так и не понял.
mesh-объект
maytonГде камера? Автор вроде не говорил ничего о камерах?
суслика видишь?
Ладно. Не получается у нас сегодня диалог.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467428
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
 public Cylinder(@Nonnull Point3D center1,@Nonnull Point3D center2, double R, int proxyEdges){
        if (isEquals(center1,center2))
            throw new IllegalArgumentException("The centers are equals!");

        double height = Point3D.distance(center1,center2);

...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467431
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛадно. Не получается у нас сегодня диалог.
это не страшно, на след день продолжим.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467515
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roleksдля того чтоб построить матрицу преобразования, необходима еще 1 ось. ГШде ее взять? А ось цилиндра? она перпендик-на новой плоскости.

Мне очень стыдно за вчерашний поток сознания, пост [20543812] в топку, щас исправлю, а потом схожу застрелиться.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467527
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо поста [20543812]

Плоскость, перпенд-я прямой, можно задать уравнением (1)
0 = (х-x0)*(x1-х0) + (y-y0)*(y1-y0) + (z-z0)*(z1-z0),
где прямая, заданная парой точек T1= (х1, y1, z1) и T0(х0, у0, z0)
пересекает плоскость, в к-рой лежит Окр(х0, у0, z0, R),

По прямой пересечения плоск-й достроить ось координат, найти м-цу M преобразования коорд-т и тогда по любой точке круга можно вычислить коорд-ты её проекции.

Но для цилиндра кроме М понадобится ещё и вектор сдвига, имхо.

Уравнение (1) выражает факт, что все вектора вида (х-х0, ...) перпендикулярны вектору (х1-х0), что эквивалентно выражению "их скалярное произведение=0". Скалярное же пр-ние вычисляется как сумма парных произвед-й координат, что и написано в (1) - этот текст для контроля.
За мелкие неточности ссори.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467578
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил ( сегодня, 00:36 ) на след день продолжим отсыпаются))

Сдаётся мне, что в матлабе это всё есть, а прогать там неимоверно удобней, запись как в екторном, так и в покомпонентном виде и есть интеграция с экселом как он-лайн, так и через АПИ, на днях гляну в своей древней версии.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467878
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://jsfiddle.net/t8447wb1/1/

В отладчике все прекрасно видно как работает отображение
в функции THREE.CylinderBufferGeometry() рассчитываются вершины цилиндра в зависимости от входных параметром
в функции renderer.render() идет отображение геометрии на экран (проекция вершин на плоскость)

смотри задавай вопросы =).
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со ссылкой на Тяпничный бенчмарк CPU (part-1)

Этот-же Vector можно использовать как Point3d и как отрезок в трехмерном пространстве
и применять к нему набор операций таких как sum, prod, vector-prod e.t.c.
Код: java
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.
@Immutable
public final class Vector {

    public final double x, y, z;

    public Vector(double x, double y, double z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public Vector sum(Vector r) {
        return new Vector(x + r.x, y + r.y, z + r.z);
    }

    public Vector prod(double r) {
        return new Vector(x * r, y * r, z * r);
    }

    public double sprod(Vector r) {
        return x * r.x + y * r.y + z * r.z;
    }

    public Vector vprod(Vector r) {
        return new Vector(y * r.z - z * r.y,
                z * r.x - x * r.z,
                x * r.y - y * r.x);
    }

    public Vector norm() {
        return this.prod(1.0 / sqrt(this.sprod(this)));
    }

}
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468034
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton this.prod(1.0 / sqrt(this.sprod(this))); Где предлагаешь обрабатывать деление на 0 ?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468040
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98roleksдля того чтоб построить матрицу преобразования, необходима еще 1 ось. ГШде ее взять? А ось цилиндра? она перпендик-на новой плоскости имел ввиду исходно заданный отрезок.
Длину только сделать =1 и направление , чтобы все оси работали по "правилу буравчика". Ну или векторное произведение 2-х других осей (если опять не спутал) - д.б. тот же результат.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98mayton this.prod(1.0 / sqrt(this.sprod(this))); Где предлагаешь обрабатывать деление на 0 ?
Давай очертим проблему сначала. Пока толком кода нет то и нет проблемы.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468057
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А над какой постановкой толком работаешь? по мере запросов ТСа или по своей?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468069
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я позволяю потоку сознания течь в произвольном направлении. Собственно как и во всех
тяпничных топиках.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468210
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цилиндр то нарисовали?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468351
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цилиндр рисовать - брызги шампанского нравятся?
для получения навыков только если, всё давно придумано, нужны лишь бОльшая доступность и фреймворки.

Всё же нулевой вектор является штатной ситуацией, поэтому типа этого
Код: java
1.
2.
3.
4.
5.
    #define EPS 1.0e-13
    public Vector norm() {
        double spr= this.sprod(this);
        return (spr <= EPS ? 0.0 : this.prod(1.0 / sqrt(spr)) );
    }

А чтоб теперь неравенство треугольника выполнялось на мелких векторах, как это сейчас делают? сумма нулевых длин == нулевой длине, не в каждой же строке проги проверять, нужно зашить на нижнем уровне.

Класс пополнить
методом длина вектора,
методом или свойством вектор нулевой длины
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468385
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Класс пополнить
методом длина вектора,
методом или свойством вектор нулевой длины
Ого бл... ну мне ничего не остается как взять под козырек и сказать Sir, Yes, Sir! И рвануть исполнять...
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39468397
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в копилку ТЗ ))
...
Рейтинг: 0 / 0
20 сообщений из 95, страница 4 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм рисования цилиндра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]