forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Уменьшения числа (http://forum.boolean.name/showthread.php?t=14783)

Vadimich 25.05.2011 14:34

Ответ: Уменьшения числа
 
вобщем, вчера я запнулся именно на этом.. не получилось внедрить t# вот и сейчас выходит не то.. получается результат, который был бы таким и без времени 1 = 1 / (1+2*.5) = .5

Черный крыс 25.05.2011 14:51

Ответ: Уменьшения числа
 
[quote=Dream;189393]умножение на дробное число никогда не приведёт к резельтату 0 (если конечно одно из чисел уже не является нулем) самый простой -
[quote]

Можно легко замагнитить число к нулю.

Vadimich 25.05.2011 14:53

Ответ: Уменьшения числа
 
а как это?

Черный крыс 25.05.2011 15:03

Ответ: Уменьшения числа
 
Цитата:

Сообщение от Vadimich (Сообщение 189410)
а как это?

Local a:Float = Rand(- 100.0, 100.0)
Local s:Float = -0.1

a = Min((Abs(a) * s) - 0.1, 0.0) * Sgn(a)

Если а меньше 0.1 то а приравнится к нулю.

Насчет функции Sgn(number) она какая то сверхсложная ?

Код:

Function Sgn:Int(num:Float)
    If a > 0.0 Then Return True
    If a < 0.0 Then Return -True
    Return False
End Function

Функция Min
Код:

Function Min:Float(v0:Float, v1:Float)
    If v0 < v1 Then Return v0
    Return v1
End Function


Dream 25.05.2011 15:27

Ответ: Уменьшения числа
 
Цитата:

Сообщение от Vadimich (Сообщение 189403)
вобщем, вчера я запнулся именно на этом.. не получилось внедрить t# вот и сейчас выходит не то.. получается результат, который был бы таким и без времени 1 = 1 / (1+2*.5) = .5

не глупи.если d#= 0тогда никакого уменьшения нету. если d#=1тоггда уменьшение в два раза. вроде же всё просто

Vadimich 25.05.2011 15:48

Ответ: Уменьшения числа
 
d - это делитель.. было бы странно, если бы деление на 1 уменьшало в два раза?

Dream 25.05.2011 16:49

Ответ: Уменьшения числа
 
Цитата:

Сообщение от Vadimich (Сообщение 189420)
d - это делитель.. было бы странно, если бы деление на 1 уменьшало в два раза?

уфффф.. ну хорошо, если тебе проще напишу так i=i/(1+d/2*t)

И вообще что это за делитель? зачем он применяется?

Vadimich 25.05.2011 17:27

Ответ: Уменьшения числа
 
если i - это импульс, то делитель (d) это то, что его гасит...
т.е. мне нужно иметь контроль для настройки скорости гашения полученного импульса и + к тому - чтобы был контроль времени этого процесса.. т.е. если время = .5, то гашение будет идти так же, но в два раза медленнее

Dream 25.05.2011 18:47

Ответ: Уменьшения числа
 
используй число от 0 до 1 и сразу вопросы отпадут
i=i*(d*t)

impersonalis 25.05.2011 20:11

Ответ: Уменьшения числа
 
извините, но первый пост - лютый БРЕД.
Автор может быть и подразумевает весьма конкретную задачу, но написал какую-то размазню.
Ответ: самый быстрый способ свети число к нулю - обнулить.
x=rnd(0,10)
x=0
Поражает наличие в треде телепатов (они вернулись из отпуска!), которые сумели восполнить пробелы, или, что более вероятно, решают свои задачи.

*импе телепатирует*
АВТОР, тебе надо читать вот это: http://ru.wikipedia.org/wiki/%D2%E5%...EB%E5%ED%E8%FF (в частности - http://ru.wikipedia.org/wiki/Следяща...ема_управления )

Mr_F_ 25.05.2011 20:21

Ответ: Уменьшения числа
 
Цитата:

АВТОР, тебе надо читать вот это: http://ru.wikipedia.org/wiki/%D2%E5%...EB%E5%ED%E8%FF (в частности - http://ru.wikipedia.org/wiki/Следяща...ема_управления )
нафига ему это читать?

impersonalis 25.05.2011 21:05

Ответ: Уменьшения числа
 
Это "типа" поможет ему смоделировать систему гашения ошибки на выходе. По сути, он моделирует некую следящую систему, реагирующую на случайный входной сигнал.
Конкретные реализации давать не имеет смысла - автор не может объяснить что хочет. Каков вопрос (по уровню абстракции) таков ответ.

LLI.T.A.L.K.E.R. 25.05.2011 23:06

Ответ: Уменьшения числа
 
Цитата:

Сообщение от Vadimich (Сообщение 189379)
к примеру я бы сделал что-то вроде этого:

a# = Rnd (-10,10); задаем случайное значение
s# = .1; шаг уменьшения

d#=0.5; скорость уменьшения (по времени)(если 1 то обычно, 2 - ускорено, 0.5 - медленно)

PHP код:

a#=Int(Sgn(a#))*(Abs(a#)-(s#*d#)) 

хотя наличие двух меньшинств не практично?
Может просто иметь скорость...

Vadimich 26.05.2011 08:39

Ответ: Уменьшения числа
 
2 impersonalis: я бы не стал разводить такой базар, если мне надо было бы просто прировнять её к нулю. Наверное я тебя своей тупостью раздражаю :) мне не надо гасить ошибку на выходе... это просто частица, которая получила определенную скорость по вектору, которую надо быстро(в зависимости от переменной) погасить. и все это привязано ко времени... чтобы если оно вдруг замедлилось, скорость уменьшалась в соответствующем темпе... я решил эту проблему ещё вчера своим ламерским способом, представленным в начале, но надеюсь научиться чему-то более... изящному, что-ли, общаясь тут с более сообразительными ребятами

impersonalis 26.05.2011 21:03

Ответ: Уменьшения числа
 
Цитата:

мне не надо гасить ошибку на выходе... это просто частица, которая получила определенную скорость по вектору, которую надо быстро(в зависимости от переменной) погасить.
Я лишь сформулировал модель в терминах указанной выше дисциплины. Ваш код (функция, процедура, тело цикла, etc) передставляет собой некую следящую систему: он отслеживает значение переменной Х. По дефолту она равна нулю. Когда появляется "импульс", переменная становится отлична от нуля. Появляется "ошибка" слежения. Система должна некоторым образом компенсировать её.
Например: сервомеханизм реагирует на давление в котле. Как только оно начинает превышать установленный порог (например, 0 Па) - система компенсирует образовавшуюся разность (актуальное и требуемое значение), например, путём стравливания излишков газа. Вот вы и спрашиваете - каким законом должна быть описана эта реакция: открыть заслонку сразу на максимум, открывать на величину, пропорциональную давлению, проч?


Часовой пояс GMT +4, время: 16:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot