ПрограммированиеФорумГрафика

Тряска объектов. (2 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#15
11:01, 24 июня 2011

ksacvet777
Вот код иллюстрирующий проблему:

/ CppFloat.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
  float a = 100000000000000;
  float b = 0.1;
  float c = a+b;
  if( a == c ) printf("Err float");
  else printf("all ok");

  return 0;
}

Конечно проблема в использовании в расчетах вместе с 100000000000000 других маленьких чисел. Поэтому я и посоветовал автору почитать, как хранится float в памяти.

#16
11:02, 24 июня 2011

Автор!
Кстати, если поменять float на double, то проблема исчезает.
В том примере, который сверху.

#17
12:55, 24 июня 2011

у меня была похожая проблема, только со временем. через 18 минут после начала игры трупы начинали подпрыгивать, дальше больше, потом всё разлеталось с космическими скоростями.

#18
13:39, 24 июня 2011

А можно к double прибавлять float кстати функция D3DXMatrixLookAtLH отвечающая за камеру требует D3DXVECTOR3 в котором float как тут поступить? и ещё я повороты делаю векторами D3DXVECTOR3 получается мне свой класс вектора писать придётся?

#19
13:44, 24 июня 2011

kroonk
> А можно к double прибавлять float
Да, можно. Сначала float преобразовываешь в double, только потом прибавляешь.
> кстати функция D3DXMatrixLookAtLH отвечающая за камеру требует D3DXVECTOR3 в
> котором float как тут поступить?
Естественно перед отображением все преобразовать к float, а вести все расчеты в double.

#20
14:42, 24 июня 2011

kroonk
Забудь про double при рендере. Видеокарты им давятся.

#21
15:12, 24 июня 2011

kroonk
> FPS 2000
Фпсу нельзя давать становиться слишком большим. Если фпс выше 100-200, то пусть программа лучше холостые циклы мотает, или вызывает sleep между кадрами.

#22
15:26, 24 июня 2011

Сменил на double теперь если лететь прямо на какую-то ось то тряски нет но чем больше отклониться от оси(пик:45 градусов) то начинает трясти. Мне кажется проблема с вектором который я использую для направления(векторы вычисляются во float).

#23
15:47, 24 июня 2011

aloha_hawaii
> трупы начинали подпрыгивать
А игра была про зомбей? Может это АИ включился просто?

#24
16:00, 24 июня 2011

aloha_hawaii
> через 18 минут после начала игры трупы начинали подпрыгивать, дальше больше,
> потом всё разлеталось с космическими скоростями.

KpeHDeJIb
> А игра была про зомбей? Может это АИ включился просто?

^=^
Ф пёррлы !

#25
16:00, 24 июня 2011

ilusha_nil
> if( a == c ) printf("Err float");
итибя тож ф перлы

#26
10:14, 26 июня 2011

Что-то не получилось переделать вычисления векторов из float в double как можно исправить погрешность во float.

#27
10:47, 26 июня 2011

kroonk
> как можно исправить погрешность во float.
Не использовать такие большие числа. Открой секрет: а нафига оно надо?

#28
12:25, 26 июня 2011

-Eugene-
> а нафига оно надо?
Да я собрался игру про космос делать ну и решил реальные размеры брать то-есть максимальный размер системы 100 миллиардов километров получается 100000000000000 метров.

#29
13:15, 26 июня 2011

ksacvet777
В чем перл?

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.