powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / синусоида между двумя точками
7 сообщений из 7, страница 1 из 1
синусоида между двумя точками
    #39928808
Iconfig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите нарисовать синусоиду только для периода от 0 до 2 * PI, между двумя произвольными точками
Формула : y=a+b\sin(cx+d). с - растяжение графика по оси Ox
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        let canvas = document.getElementById("Canvas");
        let ctx = document.getElementById("Canvas").getContext("2d");
        let startX = 0;

        ctx.beginPath();

        let w = 1;
        let startY = 180;
        let endX = 360;
        ctx.moveTo(startX, startY);

        for (x = 0; x <= endX; x += 1) {
            y = startY - Math.sin(w * (x * Math.PI / 180)) * 50;
            ctx.lineTo(startX + x, y);
        }

        ctx.stroke();


То есть, в этом примере нужно менять endX, startX и w, чтобы нарисовать интервал от 0 до 2 *PI
Например, для endX = 180, w будет 2. Для endX = 720, w будет 0.5 и.т.д
Проблема, как вычислять w при произвольных startX, endX
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39928886
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iconfig,

let endX = 50* 2 * Math.PI;
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39928888
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas,

наверное даже let endX = startX + ( 50* 2 * Math.PI);
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39928939
Iconfig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas
artas,

наверное даже let endX = startX + ( 50* 2 * Math.PI);


Что это дает? Мне нужно только интервал от 0 до 2 * ПИ
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39928947
Iconfig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Iconfig
artas
artas,

наверное даже let endX = startX + ( 50* 2 * Math.PI);


Что это дает? Мне нужно только интервал от 0 до 2 * ПИ


Т.е. синусоидальная кривая вида, как на изображении, между двумя произвольными точками
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39929111
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно понял то так

let canvas = document.getElementById("Canvas");

let ctx = canvas.getContext("2d");
let startX = 0;
let startY = 180;
let startXtmp = startX;

let endX = startX + 360 +200;

let step = (endX - startX)/360;

ctx.beginPath();
ctx.moveTo(startX, endX);

for (let x = 0; x <= endX - startX ; x += step) {
y = startY - (Math.sin( (1/step) * (x * Math.PI / 180))) * 50;
//if(y == 180)
console.log(x)
ctx.fillRect(startX+ x, y,1,1);

}
...
Рейтинг: 0 / 0
синусоида между двумя точками
    #39929297
Iconfig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,

Спасибо, замечательный ответ
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / синусоида между двумя точками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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