Ідіть в фізмат

2

(5 відповідей, залишених у Розробка ігор)

FakiNyan написав:

так raycast стосується фізики

підозрюю, що в юніті рейкаст запхали в модуль фізики для оптимізації, щоб не шукати перетин з кожним полігоном меша, а лише з колайдером

3

(11 відповідей, залишених у C/C++)

дізнайтесь спершу що роблять оператори *(окрім множення) та ++ без прив'язки до ітераторів

4

(6 відповідей, залишених у Робота)

все стало на свої місця

5

(8 відповідей, залишених у Інше)

gitlab - хостинг репозиторія + борда для тасків
trello - борда + по першому ж запиту є інтеграція з бітбакетом

6

(8 644 відповідей, залишених у Інше)

хтось тут хотів навчитись компи збирати так щоб нічого не погоріло
http://store.steampowered.com/app/62106 … Simulator/

7

(2 відповідей, залишених у Інше)

дійшло

function SetScaleFactor(S, Suv)
{
    var magicConstant = 1000;
    var realS = S / Suv;
    this._fontScaleFactor = magicConstant / Math.sqrt(realS);
}

площа realS в нас ж відповідає квадратній текстурі, отже дорівнює x^2, тобто є показниковою функцію, і чим більший х будем брати, тим швидше буде рости її значення, тому для правильної пропорції беремо корінь
тепер все працює з ювелірною точністю)

8

(2 відповідей, залишених у Інше)

отак я досліджував підхід з такою функцією

function SetScaleFactor(S, Suv)
{
    var magicConstant = 1000;
    var realS = S / Suv; //знаходимо яку площу б покривала ця текстура, якби розгортка повністю заповнювала текстуру
    this._fontScaleFactor = magicConstant / realS;
}

так виглядають модель і текстура коли підібраний magicConstant = 12500, а S = 321, Suv = 0.509 і в результаті _fontScaleFactor = 19.79

Прихований текст
http://i.piccy.info/i9/6ff0685c46eb1979d5684df3b8f17c1e/1522747456/15516/1234465/tex1.jpghttp://i.piccy.info/a3/2018-04-03-09-24/i9-12215628/769x369-r/i.gif

тепер візьмемо модель вдвічі ширшу, де так само magicConstant = 12500, а S = 642, Suv = 0.258 і _fontScaleFactor = 5.01

Прихований текст
http://i.piccy.info/i9/61a77f2be6fd34624ea8172334de8762/1522748252/11040/1234465/tex2_800.jpghttp://i.piccy.info/a3/2018-04-03-09-37/i9-12215673/800x327-r/i.gif

тобто _fontScaleFactor вдвічі менший від того який мав би бути

але якщо ми візьмемо першу модель, та типу зробимо її квадратною (щоб висота дорівнювала ширині), де
magicConstant = 12500, а S = 623, Suv = 0.98 і _fontScaleFactor = 19.78

Прихований текст
http://i.piccy.info/i9/830470961a77291e4e172684dbe6b7dc/1522748593/16396/1234465/tex3.jpghttp://i.piccy.info/a3/2018-04-03-09-43/i9-12215693/759x439-r/i.gif

9

(2 відповідей, залишених у Інше)

Всім привіт
Намагаюся добитись ефекту, щоб написаний на текстурі 3д моделі текст завжди відповідав сталому фізичному розміру, незалежно від розміру моделі

Я генерую для моделі розгортку для тої її стіни на якій хочу писати

розгортка

Розгортка визначає як текстура лягає на модель. Тобто кожній тривимірній координаті ставить у відповідність двовимірну координату на текстурі. Ці координати прийнято називати uv, бо xyz вже зайняті визначаючи вершину у тривимірному просторі і також ці uv координати є нормалізованими, тобто набувають значень від 0 до 1, це зроблено для того щоб таку розгортку можна було легко застосувати до текстури любого розміру просто помноживши їх на її розмірність.
ліворуч - текстура та розгортка наній, праворуч - модель

http://i67.tinypic.com/13z5tm9.jpg

Після цього я аналізую всі трикутнички моделі попутно обчислюючи два значення
S - реальну площу cтіни(сторони) моделі для якої ми згенерували розгортку
Suv - типу площа розгортки на текстурі, тобто по суті получається коефіцієнт заповненості текстури 0 <= Suv <= 1

Я підозрюю що цих двох значень мало б бути достатньо, щоб знайти коефіцієнт який би правильно масштабував текст
Так виглядає моя остання спроба:

function SetScaleFactor(S, Suv)
{
    var magicConstant = 1000;
    var realS = S / Suv; //знаходимо яку площу б покривала ця текстура, якби розгортка повністю заповнювала текстуру
    this._fontScaleFactor = magicConstant / realS;
}

Але на чим більших моделях тестую(чим більша S), тим меншим получається розмір тексту за очікуваний

Які у вас ідеї як це можна поправити?
І якщо цікаві результати тестів чи ще якісь шмати коду теж кажіть, зараз і так не маю можливості їх прикріпити

10

(616 відповідей, залишених у Інше)

то є норма

11

(616 відповідей, залишених у Інше)

оті всякі маніпуляції типу 0/0, ∞-∞ і тд в контексті границь функції (а те про що йшлося вище якраз і є границями ф(+-1/х) при х->∞) дають невизначеність, і щоб її позбутись використовують правило Лопіталя

12

(616 відповідей, залишених у Інше)

FakiNyan написав:

в мене тут думка з'явилась, а що, якщо ми не будемо перемножувати те, що виділене жовтим, а просто розкриємо дужки?

про яке перемноження ви говорите? зелене і синє рівняння якраз є наслідком розкриття дужок жовтого і зведення подібних доданків

13

(616 відповідей, залишених у Інше)

висновок ваш виглядає правильниним

стосовно синього рівняння, продовжу з моменту коли ми розклали жовте на

зелене - синє

тепер додамо до нашого ріняння таку конструкцію яка ніяким чином його не змінить

зелене - синє + оранжеве - оранжеве

погрупуємо їх

(зелене + оранжеве) - (синє + оранжеве)

і тепер відповідно перша група перетворилась на червоне, а друга - на сіре
можете це перевірити вручну розкривши квадрат сірого рівняння

Betterthanyou написав:

Так в С++ використовується std::array, хіба ні ? Те що ви написали це С стиль.

C стиль, який успішно перекочував в С++
до речі ось і сам стандарт, де на 179 сторінці 8.3.4 йдеться про оголошення масивів

а std::array це бібліотечна обгортка над звичайними масивами

Betterthanyou написав:

Так я можу написати
https://msdn.microsoft.com/en-us/library/zb1574zs.aspx

Звичайно можете, тільки раз ви послуговуєтесь с++ ним бітсетом, то і не вмішуйте сюди сішний стандарт,
а с++11 стандарті масив ініціалізується constant-expression'ом


Yola написав:

Дійсно нема причин окрім бажання/небажання постачальників компліторів, щоб втілити масиви розмір яких визначається під час виконання. gcc дозволяє такі масиви. Але це інше ніж відмінні типи.

З масивами це всього лише скільки пам'яті виділити на стеку. І це можна визначати кожен раз при виклику функції в якій цей масив оголошено.

З типами інакше, щоб використовувати тип потрібно знати адреси всіх його функцій, і це треба знати під час компіляції. І взагалі, чи ця функція у типа є, бо bitset<5> і bitset<6> можуть мати різні набори членів.

Я розумію, я хотів донести інше, що як з шаблонами так і з масивами - їх тип\розмір повинен бути відомим на етапі компіляції, тому просту змінну туди і не засунути

Betterthanyou написав:

Можна вставити не константне значення у виклик функції з нетиповими параметрами шаблонів?
наприклад bitset

int b;
std::cin>>b;
std::bitset<b>(0b1100);

(Я вже пробував використовувати явні конвертації - не допомагають, помилка error: the value of ‘b’ is not usable in a constant expression)

По тій же причині, що ви не можете написати так:

int a;
cin >> a;
int arr[a];
Прихований текст
http://www.cplusplus.com/reference/bitset/bitset/
The size of a bitset is fixed at compile-time (determined by its template parameter).

ви викликаєте неконстантний гетер у константному методі

якщо ви початківець, то вам краще обарти рішення у якому все йде "з коробки", тоді ви зможете сконцентруватись на написанні коду, а не танцях з бубном довкола нього
тому як казали вище на перший час беріть microsoft visual studio
коли втомитесь від тормознутості студії переходьте на Qt Creator

19

(8 644 відповідей, залишених у Інше)

вона прийде коли ви будете завалені домашкою

20

(6 відповідей, залишених у C/C++)

спробуйте для початку просто вашим компілятором зібрати два варіанти, щоб визначити, чи проблема в тому, що чогось бракує вашій системі, чи cmake'у

виведіть ще sizeof(size_t), а то всяке буває