Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2017, 14:39   #11
vovamakr
Пользователь
 
Регистрация: 21.09.2015
Сообщений: 41
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
1. Зачем вам эти powl, sqrtl, когда есть стандартные std:ow, std::sqrt ?
2. Вы так свободно делите... а если там 0 ?
переделал, выдает ошибку: (16): error C2664: 'float length(Vector2f *)': cannot convert argument 1 from 'Vector2f' to 'Vector2f *' хм , кажеться все норм у меня, а оно конвертировать не может.

2. А как луче делить?
vovamakr вне форума Ответить с цитированием
Старый 11.01.2017, 14:50   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
хм , кажеться все норм у меня, а оно конвертировать не может
Плохо кажется. Вы объявили, что функция принимает указатель, а суете ей объект.

Цитата:
2. А как луче делить?
Зависит от задачи и подхода. Можно проверять на не 0, а можно просто ловить исключения.
p51x вне форума Ответить с цитированием
Старый 11.01.2017, 18:05   #13
vovamakr
Пользователь
 
Регистрация: 21.09.2015
Сообщений: 41
По умолчанию

Цитата:
Зависит от задачи и подхода. Можно проверять на не 0, а можно просто ловить исключения.
вы про это имеете введу?
Код:
float normalize(Vector2f*  vec)
{
	float len = length(vec);
	if (len == 0) 
	{
		return 0;
	}
	else 
	{
		float inv_length = 1.0f / length(vec);
		return inv_length;
	}
	
}

Последний раз редактировалось vovamakr; 11.01.2017 в 18:07.
vovamakr вне форума Ответить с цитированием
Старый 11.01.2017, 18:18   #14
vovamakr
Пользователь
 
Регистрация: 21.09.2015
Сообщений: 41
По умолчанию

Я переделал:
Код:
float normalize(Vector2f*  vec)
{
    float len = length(vec);
    if (len == 0)
    {
        return 0;
    }
    else
    {
        return Vector2f ((vec->mX / length(vec->mX)),  vec->mY / length(vec->mY));
    }

}
но как тут правильно написать чтобы не было ошибки?
Цитата:
return Vector2f ((vec->mX / length(vec->mX)), vec->mY / length(vec->mY));
и тут
Цитата:
Vector2f vec1(3.0f, 5.0f);
Vector2f norm;
norm = normalize(vec1);
vovamakr вне форума Ответить с цитированием
Старый 11.01.2017, 18:27   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
return Vector2f ((vec->mX / length(vec->mX)), vec->mY / length(vec->mY));
Это что? Зачем вы пытаетесь в функцию, хотящую указатель на класс, запихнуть одну из координат?

Код:
Vector2f vec1(3.0f, 5.0f);
Vector2f norm;
norm = normalize(vec1);
Ну так сделайте, чтоб функция возвращала не флоат, а нужный вам вектор. Или наоборот уберите вектор на принимающей стороне...

Что эта функции должна делать по вашей задумке? Почему вы ее сделали вне класса?
p51x вне форума Ответить с цитированием
Старый 11.01.2017, 18:29   #16
vovamakr
Пользователь
 
Регистрация: 21.09.2015
Сообщений: 41
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
return Vector2f ((vec->mX / length(vec->mX)), vec->mY / length(vec->mY));
Это что? Зачем вы пытаетесь в функцию, хотящую указатель на класс, запихнуть одну из координат?

Код:
Vector2f vec1(3.0f, 5.0f);
Vector2f norm;
norm = normalize(vec1);
Ну так сделайте, чтоб функция возвращала не флоат, а нужный вам вектор. Или наоборот уберите вектор на принимающей стороне...

Что эта функции должна делать по вашей задумке? Почему вы ее сделали вне класса?
оно должна нормализировать вектор, то есть вектор должен иметь 1 длину
мне нужно чтобы выводилось так
(a.x / |a| , b.x / |b|) а выводиться только одно значение в прежнем коде
vovamakr вне форума Ответить с цитированием
Старый 11.01.2017, 18:37   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так засуньте ее в класс. Это более логично и указатель вам передавать уже не надо и длину подсчитаете.
p51x вне форума Ответить с цитированием
Старый 11.01.2017, 19:03   #18
vovamakr
Пользователь
 
Регистрация: 21.09.2015
Сообщений: 41
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так засуньте ее в класс. Это более логично и указатель вам передавать уже не надо и длину подсчитаете.
ок. а можете переделать мою функцию как правильно, а то я так и не понял как правильно. я передаю не флоат тип а свой клас, но так и ошибка есть
vovamakr вне форума Ответить с цитированием
Старый 11.01.2017, 19:57   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Я ж говорю - сделайте ее в классе, уберите лишний параметр и возвращайте вектор.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" link90 Общие вопросы C/C++ 2 27.03.2016 12:34
Реализовать класс "Mагазин города" malikon C# (си шарп) 2 03.12.2014 17:24
Реализовать класс с именем "Stroki". Реализовать в нём возможность <Поиска и замены фрагмента> Olgazag C# (си шарп) 0 12.12.2013 11:09
Нужно разработать класс "вектор" и реализовать операцию векторного умножения векторов. (язык C) Кристина178012 Помощь студентам 0 17.09.2013 22:42
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40