Показать сообщение отдельно
  #6 (permalink)  
Старый 28.08.2020, 01:46
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от him
надо красиво нарисовать график.
Если имеется всего несколько точек, то рисование lineTo сделает ломаную. Потому что за единицу размера (расстояние по оси Х между соседними точками) придется взять не один, а несколько пикселей.

Тебе нужен bezierCurveTo.
https://msiter.ru/references/html5-canvas/beziercurveto

Контрольные точки (см.картинку в статье) лежат на касательных, проходящих через твои точки. Остаётся только смекнуть углы наклона этих касательных.

Для любой точки (кроме двух крайних) можно считать, что касательная параллельна линии, проходящей через соседнюю точку слева и соседнюю точку справа. Какую касательную брать для первой и последней точки, сходу не придумывается, тут поэкспериментируй сам..

Ну и второй момент - где именно на этих касательных ставить контрольные точки. Навскидку подойдёт вариант брать по 1/3 единичного расстояния по оси Х, хотя опять же тут надо экспериментировать.

Последний раз редактировалось Alexandroppolus, 28.08.2020 в 03:38.
Ответить с цитированием