Доброго дня. Одной из задач было нарисовать аэродинамический профиль состоящий из дуг окружностей. Нарисовать - нарисовал, но ламерски, из точек, слившихся в линии. Требуется все же соединить точки линиями, тоесть получить ломанную, ее части понадобятся в расчетах далее.
Код подпрограммы рисования:
| Код | subroutine ris (N, xc, c, b, lz, betaz) use dflib integer status2, XE, YE, k, x1, y1, x2, y2, N real xc, c, b, xc1, c1, b1,lz1, r1, r2, x, y, lz, betaz, xz, yz type (windowconfig) wc type (xycoord) xy
status2 = setbkcolor(1) call clearscreen($gclearscreen) res = getwindowconfig (wc) XE = wc.numxpixels YE = wc.numypixels
status2 = setcolor(10)
xc1=xc/b c1=c/b b1=b/b lz1=lz/b betaz=90-betaz
k=800*YE/XE
r1=(((xc1)**2)/c1)+c1*0.25 !носик r2=(((1-xc1)**2)/c1)+c1*0.25 !хвостик
status2=setcolor(13) status2=setpixel((XE/2)-(b1*k/2)+(xc1*k),YE/2) status2=setpixel((XE/2)-(b1*k/2)+(xc1*k),(YE/2)-(c1*k/2)) status2=setpixel((XE/2)-(b1*k/2)+(xc1*k),(YE/2)+(c1*k/2)) status2=setpixel((XE/2)-(b1*k/2),YE/2) status2=setpixel((XE/2)+(b1*k/2),YE/2) status2=setpixel((XE/2)+(b1*k/2),YE/2) status2=setpixel((XE/2)+(b1*k/2)-(lz1*k),(YE/2)) status2=setpixel((XE/2)+(b1*k/2)-lz1*k-(lz1*sind(-betaz)*k),(YE/2)+(lz1*cosd(betaz)*k))
do x = 0, xc1, b1/N ! носик-низ status2= setcolor(0) y=0.5*c1-r1+((r1**2)-(x-xc1)**2)**0.5
x1=x*k+(XE/2)-(b1*k/2) y1=y*k+YE/2
status2=setpixel(x1,y1)
enddo do x = xc1, b1, b1/N ! хвостик-низ status2= setcolor(7) y=0.5*c1-r2+((r2**2)-(x-xc1)**2)**0.5
x1=x*k+(XE/2)-(b1*k/2) y1=y*k+YE/2
status2=setpixel(x1,y1) enddo
do x = xc1, b1, b1/N !хвостик-верх status2= setcolor(0) y=0.5*c1-r2+((r2**2)-(x-xc1)**2)**0.5
x1=x*k+(XE/2)-(b1*k/2) y1=-y*k+YE/2
status2=setpixel(x1,y1) enddo
do x = 0, xc1, b1/N !носик-верх status2= setcolor(7) y=0.5*c1-r1+((r1**2)-(x-xc1)**2)**0.5
x1=x*k+(XE/2)-(b1*k/2) y1=-y*k+YE/2
status2=setpixel(x1,y1)
enddo
end subroutine
|
http://s1.ipicture.ru/
Если в одном из циклов заменить status2=setpixel(x1,y1) на call moveto(x1, y1, xy); status2=lineto(x1,y1) то линия будет проведена из начала координат в вычисленную точку. Вот вроде не так сложно, но моих навыков не хватает, прошу помощи) |