Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Пример, к которому вы оставили комментарий строит именно то самое изображение на языке с#, которое вам необходимо. Отличается только цветовая палитра.
Добрый день! Уже и не знаю куда обратиться. Нужно построить фрактал Жулиа на языке программирования C#. Что бы получилось данное изображение
Необходимо дополнение, как все это запустить, Где писать все эти команды, чтобы видеть результат. Я имею ввиду, что необходимо продемонстрировать полный код HTML-страницы со скриптом и тегами холста. Может даже сделать Урок 0 "Как начать рисовать в...
КРУГОВОЙ ФРАКТАЛ -ОШИБОЧНАЯ ПРОГРАММА! ПАПА ЗибЕрт
Можешь обяснить подробно что как работает, и почему массу не задаем

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Язык программирования: 
Javascript
Среда программирования: 
HTML5 + JavaScript

ПОСМОТРЕТЬ СПИРАЛЬ

<head>
<meta name="mobile-web-app-capable" content="yes">
</head>
<body style="background: #000">
<canvas id="myCanvas" style="background: #000"></canvas>
<script>
canvas = document.getElementById("myCanvas")
ctx = canvas.getContext("2d")
w = canvas.width = window.innerWidth
h = canvas.height = window.innerHeight
ctx.lineWidth = 2
ctx.fillStyle = '#fff'
ctx.font = '40px Arial'
 
n=1 //начальное количество точек на 360 градусов (на каждый оборот)
scale=1 //для зум-эффекта
l=Math.PI*2/n // угол/шаг
k=0.0005 //коэфициент увеличения точности аппроксимации
s=0.0001 //скорость зума
bits=1
 
function draw(){
	ctx.clearRect(0, 0, w, h)
	ctx.beginPath()
	ctx.moveTo(w/2,h/2)
	for(var t=l;t<=200;t+=l) {
		/*** создаем эффект глубины при помощи градиента яркости ***/
		var x = Math.round(Math.pow(((t+t-l)/2)/200,2)*230+25)
		u=((n*100)%10)*0.2
		if(u>1)u=2-u
 
		/**меням цвет с помощью битовых масок**/
 		if(bits/4>=1) r=Math.round(x*u)
 		else r=x
 		if((bits%4)/2>=1) g=Math.round(x*u)
 		else g=x
 		if(bits%2>=1) b=Math.round(x*u)
 		else b=x
 
		ctx.strokeStyle = 'rgb('+r+','+g+','+b+')'
	    /*****************************************/
		/*** непосредственно прорисовываем спираль в декартовых координатах (соединяем точки)***/
		if(t+l>200){// если точка последняя - прорисовываем линию постепенно во избежание дерганий
			prev={
				x:scale*(t-l)*Math.cos(t-l)+w/2,
				y:scale*(t-l)*Math.sin(t-l)+h/2}
			cur={
				x:scale*t*Math.cos(t)+w/2,
				y:scale*t*Math.sin(t)+h/2}
			c=200/l-Math.floor(200/l)
			ctx.lineTo(prev.x+(cur.x-prev.x)*c, prev.y+(cur.y-prev.y)*c)
			ctx.stroke(); ctx.closePath()
		}
		else{
			ctx.lineTo(scale*t*Math.cos(t)+w/2, scale*t*Math.sin(t)+h/2)
			ctx.stroke(); ctx.closePath();   ctx.beginPath()
			ctx.moveTo(scale*t*Math.cos(t)+w/2, scale*t*Math.sin(t)+h/2)
		}
	}
	n+=k //увеличиваем количество точек на на каждый оборот
	// эффект вращения образуется именно из-за этого. при больших n (к примеру 20) спираль принимает знакомый, более менее округлый вид
	if(((n*100)%10)>=5 && (((n-k)*100)%10)<=5)bits++ //следующая битова маска цвета
	if(bits==7)bits=1
	scale+=100*s*scale //зум
	if(scale>3||scale<1)
		s=-s //обращаем направление зума
	l=Math.PI*2/n
	ctx.fillText((n).toFixed(3)+"",20,50)
	requestAnimationFrame(draw)//переходим к следующему фрейму
}
draw()//начинаем цикл
</script>

Прикрепленный файлРазмер
melnichuk_inSpiral.rar1.09 кб