Гипербола

Тема в разделе "WASM.ASSEMBLER", создана пользователем jinx, 12 май 2008.

  1. jinx

    jinx New Member

    Публикаций:
    0
    Регистрация:
    12 май 2008
    Сообщения:
    1
    Уважаемые программеры, очень нужна нарисовать гипперболу при помощи языка ассемблер(fasm), не могли бы Вы написать хотя бы примерный код программы, а если вся полностью будет - пиво/пепси/молоко обеспечу.
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    В какой операционной системе и как скоро?
     
  3. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Чудное задание - никакой конкретики, поэтому на исполнение не обижайся:)
    Способ первый - рисуешь график в маткаде, матлабе, фотожопе и сохраняешь рисунок. При создании окна через LoadImage подгружаешь рисунок и на его основе создаешь PatternBrush, которой окошко и заполняешь. Просто, со вкусом, но врят ли понравится твоему преподавателю 69(. Сорц, ехе в аттаче.
    to be continue
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    нарисовать гиперболу в fasm-2
    Способ второй - рисуем график при обработке события WM_PAINT по формуле x²/a²-y²/b²=1 (a=30 b=50) выводим 200 точек функцией SetPixel, используя симметричность графика. Тоже достаточно просто, гарантировано понравится твоему преподавателю:) Сорц и ехе в аттаче
    to be continue
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Mikl__
    лучше первую команду все же заменить на xor ebx, ebx
    ибо на висте не пашет
     
  6. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    KeSqueer
    Учту. (там был выигрыш в 1 байт)
    а закрывается в висте нормально, я изменил цикл обработки сообщений?
     
  7. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    нарисовать гиперболу в fasm-3
    Способ третий - рисуем график гиперболы по заранее расчитанным точкам (например, в Excel) при помощи функций Arc, MoveToEx, LineTo:)
    Сорц и ехе в аттаче
    to be continue
     
  8. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Mikl__
    Закрывается без проблем, но еще есть проблема с курсором (IDC_SIZEWE вместо IDC_ARROW)
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    KeSqueer
    Писалось и проверялось под WinXP, висты нету:dntknw:
     
  10. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    KeSqueer
    Значения. которые возвращают LoadIcon LoadCursor можно получать заранее при помощи вот такой несложной конструкции
    Код (Text):
    1. ; masm windows gui #
    2. .686P
    3. .model flat
    4. include windows.inc
    5. includelib user32.lib
    6. extern _imp__MessageBoxA@16:dword
    7. extern _imp__wsprintfA:dword
    8. extern _imp__LoadCursorA@8:dword
    9. .code
    10. start:  xor ebx,ebx
    11.     sub esp,64
    12.     mov ebp,esp
    13.     push IDC_ARROW
    14.     push ebx
    15.     call _imp__LoadCursorA@8
    16.     push eax
    17.     call @f
    18.     db 'IDC_ARROW=%Xh',0 ;format   
    19. @@: push ebp;buffer
    20.     call _imp__wsprintfA
    21.     push ebx;MB_OK
    22.     call @f
    23.     db "MessageBox",0;MsgCaption
    24. @@: push ebp;offset buffer;edi
    25.     push ebx
    26.     call _imp__MessageBoxA@16
    27.     add esp,64+12
    28.     ret;    invoke ExitProcess,NULL
    29. end start
     
  11. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    нарисовать гиперболу в fasm-4
    Способ четвертый - рисуем график гиперболы по заранее расчитанным точкам (например, в Excel) при помощи функции PolyBezier (правда по сравнению с первыми тремя гиперболами выглядит грубовато)
    Сорц и ехе в аттаче