Вопрос Win Api

  • Автор темы Автор темы Stan_Ak
  • Дата начала Дата начала
Paste is my life
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2017
Сообщения
146
Реакции
13
Всем привет.
Ребят, просвятите как работать с sqrt, sinf, cosf и тд, математикой без crt короче, как объявить их и пример.
Спасибо.
 
Всем привет.
Ребят, просвятите как работать с sqrt, sinf, cosf и тд, математикой без crt короче, как объявить их и пример.
Спасибо.
это всё есть в либах cmath, math.h
для триги можешь определять пи как double pi = 3.1415926535
обьявлять так, если чо нужна помощь то пиши,мб помогу
Код:
Expand Collapse Copy
#include <math.h>
 
это всё есть в либах cmath, math.h
для триги можешь определять пи как double pi = 3.1415926535
обьявлять так, если чо нужна помощь то пиши,мб помогу
Код:
Expand Collapse Copy
#include <math.h>
Ты не понял, это можно реализовать с вин апи самой игры, не использую math.h
 
#define j_sqrt ((double(*)(double))0x1419D1B7F)
#define j_pow ((double(*)(double,double))0x1417AF14A)
#define ABS(v) ((v<0)?(-v):(v))
адреса устарели вроде
и юзать j_sqrt( 0 ) например
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
#define j_sqrt ((double(*)(double))0x1419D1B7F)
#define j_pow ((double(*)(double,double))0x1417AF14A)
#define ABS(v) ((v<0)?(-v):(v))
адреса устарели вроде
и юзать j_sqrt( 0 ) например
Теже яйца, только в профиль.
C++:
Expand Collapse Copy
double _sqrt(double value)
{
    double height = 1, width = value;
    while (std::abs(width - height) > 0.00001) {
        height = (height + width) / 2;
        width = value / height;
    }
    return width;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Теже яйца, только в профиль.
C++:
Expand Collapse Copy
double _sqrt(double value)
{
    double height = 1, width = value;
    while (std::abs(width - height) > 0.00001) {
        height = (height + width) / 2;
        width = value / height;
    }
    return width;
}

Код:
Expand Collapse Copy
//From Src ICode
#include <intrin.h>
float pow(float x, float y) {
    return _mm_cvtss_f32(_mm_pow_ps(_mm_set_ss(x), _mm_set_ss(y)));
}
float sqrt(float x) {
    return _mm_cvtss_f32(_mm_sqrt_ss(_mm_set_ss(x)));
}
float cos(float x) {
    return _mm_cvtss_f32(_mm_cos_ps(_mm_set_ss(x)));
}
float exp(float x) {
    return _mm_cvtss_f32(_mm_exp_ps(_mm_set_ss(x)));
}
float sin(float x) {
    return _mm_cvtss_f32(_mm_sin_ps(_mm_set_ss(x)));
}
void memset(void* dst, UCHAR val, size_t size) {
    __stosb((PUCHAR)dst, val, size);
}

__forceinline float _hide(float value) {
    return _mm_cvtss_f32(_mm_castsi128_ps(_mm_cvtsi32_si128(*(int*)&value)));
}
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
template <typename type, typename... Args> __forceinline type _vcall(void* base, int index, Args... args) {
    return ((type(__stdcall*)(void*, Args...))(*(uintptr_t**)base)[index])(base, Args(args)...);
}

template <typename type, typename... Args> __forceinline type _call(uintptr_t address, Args... args) {
    return ((type(__stdcall*)(Args...))address)(Args(args)...);
}

struct IActor
{
    IItem* GetCurrentItem(bool includeVehicle) {
        return _vcall<IItem*>(this, 57, includeVehicle);
    }
};

void* CryMalloc(size_t _Size) {
    return _call<void*>(0x1400A2F80, _Size);
}
 
Назад
Сверху Снизу