а затем, что увеличивая на единицу [math]X[/math] от [math]-A[/math] до [math]A[/math], по формуле [math]B\sqrt{1–X^{2}/A^{2}}[/math] ты бы вычислял [math]Y[/math] и рисовал эллипс, точка за точкой, ну, а если не хочешь, то тогда подбирай, подбирай... нарисуешь эллипс не забудь выложить результат.
Mikl___ Не ну а если чисто разобраться, что не так? Недостаточная, как ты говоришь, плавность прорисовки? Ну так он и у тебя не сплошняком рисует. Да и почему CBW не помогает? Code (Text): aw dw 0 ... mul x ;makin AХ equal to X^2 mov dx,ax xor ax,ax mov al,a cbw mov aw,ax xor ax,ax mov ax,dx div aw Под А размерностью в слово править больше надо
dessaber Меняй не меняй -- идея с подбором "тупая", но это ТВОЯ идея -- вот тебе с ней и возится, на много проще было взять мою готовую программу и добавить туда ввод твоих радиусов, насколько я понимаю преподавателей, подошла бы и программа с подстановкой в текст программы любого радиуса с перекомпиляцией на глазах преподавателя и повторным запуском, тут главное в том, что ты якобы понял, как этот эллипс рисуется, ввод радиуса это уже не так интересно, и оценивается меньшим количеством баллов, но я об этом уже писал...
Mikl___ Почему? Это не суть, но ты не правильно понимаешь. Здесь не баллы, здесь сдал/не сдал. В данном случае - нет ввода => нет зачета. Все-таки почему не работает не понятно...
Mikl___ Все смотрел, все на месте. Разобрались уже что переменные не нули, т.е. проблема в размерностях. По коду проблем с ними быть не должно.
Зачем вообще деление? У вас же [math]A[/math] и [math]B[/math] - константы. Умножайте на обратные величины [math](X*P)^{2}+(Y*K)^{2} < 1[/math], где [math]P=1/A[/math], [math]K=1/B[/math] - заранее посчитанные константы. А чтоб работать с целыми числами - умножьте неравенство на достаточно большое число [math]R^2[/math] (скажем, на [math]2^{32}[/math], то есть, [math]R=2^{16}[/math]): [math](X*M)^2+(Y*N)^2 < R^2[/math], где [math]M=R/A[/math], [math]N=R/B[/math].
Dmitry_Milk ну так то да, разумно а не, не разумно. Как 1/A, 1/B будут константами, если A, B вводиться должны?
dessaber, а еще воспользуйтесь такими моментами, что [math](X+1)^2=X^2+2\cdot X+1[/math] (и то же самое для [math]Y[/math]), то есть, при изменении координаты на 1 нет необходимости вычислять квадрат заново, а можно получить его из предыдущего значения квадрата и исходного значения умножением на 2 (простой сдвиг) и сложениями - и вы проложите тропу для велосипеда Брезенхема
Блин, народ приделайте ввод плз. Хотя бы к тем прогам что уже были написаны здесь. У меня не получается.
dessaber, проблема то в чем? если целочисленный ввод - то обычный цикл по последовательности цифр, в каждой итерации - умножение временного результата на 10 и добавление очередной цифры (естественно не кода символа цифры, а значения).
Dmitry_Milk по уже написанной проге Mikl___'a так просто не получится (во всяком случае мне так кажется). Там все переменные, связи между ними определены заранее. Чуть попробовал подправить, все сразу полетело, размерности, обращения к переменным и т.д. и т.п. Еще пробовал к примеру сделать все также как у него, только в объявления написал вместо equ =, чтобы по ходу программы можно было значения править и создал переменные двойники чтобы в них залить значения со ввода, и потом в оригиналы через = закинуть. Но я как понял вместе со значение наследуются и свойства, размерность к примеру. Т.е. тоже самый косяк получился.
А не надо equ на = заменять. Надо творчески: Code (Text): radius dw 99 ..................... mov ax,radius sub ax,1 mov bx,ax И т.д. Ну и следить чтобы не затереть по ходу другие данные в ax