-ћузыка

»нтересное решение со световодами

ƒневник

ѕонедельник, 11 »юл€ 2016 г. 02:17 + в цитатник
ќткрыл свой древний и лохматый HP LaserJet 1020 по причине поиска отпадающего USB-B (да, его тоже можно сломать!) и обнаружил интересное решение выведение плоских светодиодов SMD в другую произвольную плоскость.
¬ идеале стекл€шки светодиодов должны сто€ть напротив самих линз светодиодов. јн нет, как вы€сн€етс€, это требует отдельной платы - деньги. ј использовать гнутые светодиоды монтажа Ђнапротыкї таких гигантов как HP не устраивает.
—ветовод2 (525x700, 243Kb)
¬ыход: литые световоды.  ак ни странно, одна деталь, зато кака€. ѕлата расположена под 90∞ к плоскости, свет проходит через стекл€шку и выходит лицом на пользовател€.
—ветовод (525x700, 217Kb)
Ќу ещЄ пон€тно, что лишн€€ плата - лишние деньги, но наверное, светодиод напротык ставить китайским дет€м неудобно и много ошибок, поэтому монтируют SMD на поточной линии, и прил€пывают световод. ¬идимо, так действительно дешевле.

ј сейчас € представил, что с такими решени€ми можно не одну задницу спасти, ибо наверн€ка, когда обнаружилось, что лишнюю плату ставить нельз€, кое-кто захотел спрыгнуть.

¬едь according to предыдущий пост, кажда€ операци€, умноженна€ на сотни-тыс€чи штук, выливаетс€ в неслабую расходную денежку.


“ем непон€тно сопротивление нашего тополога в уже п€той вариации 5.0 диктофона дл€ прослушки лакеев (не версии, ибо в сущности то ачивы версии 2.0, как то WiFi и автономное сливание данных на сервер остались, но превратились у заказчика в вариации габаритов и Ђхочу другой диодик и ещЄ диодик уровн€ зар€да ј Ѕї, так вот, непон€тно и дико мне его стремление сохранить разъЄмы программировани€ процессора в исходном виде, хот€ если сделать отверсти€ шагом 2,54мм со смещением 0,3 по оси, нам даже не придЄтс€ вскрывать корпуса ради апдейта. ƒа непон€тно даже, почему не сделать краевой разъЄм односторонний. Ќа месте монтажницы, которой попадЄт задача 100 штук разъЄмов установить, а потом сн€ть (это, позвольте, 6 паек * 100 шт. = 600 точек пайки!), € бы долго плевалс€.
Ќу, у варианта со смещЄнными отверсти€ми есть недостаток очевидный - любой коротыш может быть критичен (литиева€ батаре€ внутри, контакты питани€ и сброса слишком снаружи, чтобы любопытный ум не ковырнул скрепкой), а вот краевой разъЄм и док-станци€-переходник дл€ зашивки не помешает. ј ведь 100 штук уже партейка, а мы метим на 1000...
IMG_1871 (700x525, 118Kb)
 орпусок, кстати, из-под фотополимерного принтера. ќчень годное качество.
IMG_1870 (525x700, 95Kb)
я тихо делаю конструкторские выводы: рЄбра жЄсткости существенно с каждым 0,5мм высоты действительно добавл€ют прочности на кручение и излом. Ёкономии ради использовал имеющиес€ кнопки, трЄхцветные светодиоды напротык, выключатели из ниоткуда, всЄ, лишь бы не плодить лишний номинал. » всЄ же € бы ещЄ скруглил углы (уже применена поверхность  унса), добавил рЄбер жЄсткости повыше-потолще, а то сейчас диктофон всЄ равно на скручивание имеет меньшую прочность, чем хочетс€, чтобы давать гражданским в руки.
¬ колонках играет - √өлнара √абидуллина
–убрики:  этот удивительный мир вокруг нас

ћетки:  

» вышел € с поезда в  отельниках

ƒневник

—уббота, 18 »юн€ 2016 г. 02:48 + в цитатник
и что-то щелкнуло в голове:)
IMG_1835 (525x700, 139Kb)
(€ на многих станци€х метрополитена, построенных в последние 10 лет, не был, всЄ в новинку). ƒупа, конечно, дальн€€, куда дальше чем јка€шка и даже ћытищи, рассто€ни€ конские, маршруточники и дальние автобусы, девки в шлЄпках, шумно, лето, солнце, во рту сохнет, в глаз лупит, тапки в пыли, макдональдс, зельгрос и большие фуры, “   »“. ќб этом позже.


 ак-то всЄ чистенько, как в игрушек Duke Nukem 3D с Hi-res pack и текстурами от игрушки Metro: The Stalin Subway. ¬оспроизвЄл, понравилось - напоролс€ на свои старые скриншоты, где этот самый Duke Nukem 3D был целым фантазийным миром.
duke0008 (700x525, 48Kb)
ѕроцесс рисовани€ уровней захватывал мен€ больше геймпле€. —егодн€ выкладываю скрины этак 6-летней давности. ”ровень (карта) - поппури на тему метрополитена. Ќемного больной фантазии
ƒепо грузового метрополитена.
duke0000 (700x525, 39Kb)
“о же депо. ’орошо детализированный вагон - помесь типа √ (какие текстуры были) и ≈, с открывающимис€ двер€ми и перегородкой на стЄклах. ќткрывашка дверей слева. ƒаже колЄса прорисовал)))
duke0001 (700x525, 40Kb)
ѕо типу сквозного прохода) “екстура линкруста, поручни, светильники а-л€ номерные 81.740/81.741
duke0002 (700x525, 50Kb)
ћетродепо, проходна€. —ерпымолот, как без них.
duke0003 (700x525, 37Kb)
»спешли дл€ быдла - по типу падик на любом районе постсоветского пространства))) ¬ообще не заморачивалс€ с подгоном текстур под окна
duke0004 (700x525, 21Kb)
Ёто вот тут они пьют и дуют под репчик)) ящики все целые, ѕочта –оссии)))
duke0005 (700x525, 26Kb)
“ипова€ хрущоба забулдыги-алкоголика)) — паласами по стенам, ультранизким потолком и бутылки.
duke0006 (700x525, 27Kb)
“екстуры местами из Redneck Rampage, местами отдающие сайлент хиллом.
duke0007 (700x525, 31Kb)
 апелька беспредела на районе)))
duke0008 (700x525, 38Kb)
”страшающий въезд в депо.
duke0009 (700x525, 40Kb)
≈сть такое дикое место в г.ћосква - ЅирюлЄво западное. “уда многие дес€тилети€ не могут прот€нуть ни метрополитен, ни трамвай, партайгеноссе сверху справедливо считают, что у них уже есть рельсовый транспорт в большом количестве, посему пусть жмутс€ в маршрутках до ближайшей станции.  риминал и разгром овощебазы не помог - вопиющий случай в полицейской хронике, когда вечером, переход€ через лесок возле ж/д станции женщина была изнасилована Ќ≈√–ќћ, хот€ еЄ муж ждал на другой стороне моста. Ќу пиздец же а?
¬ариаци€ на тему автобусного кольца возле станции Ѕирюлево-пассажирска€ с видом на “Ё÷ и город.
duke0010 (700x525, 50Kb)
Ѕордель с суши-баром возле метро недорого без регистрации и смс.
duke0016 (700x525, 34Kb)
 ухн€ шлюши-бара.
duke0017 (700x525, 31Kb)
ЋарЄчек (Ёй, —об€нин!), вход в "метро" и шлюшка. «апах шаурмы.
duke0011 (700x525, 44Kb)
Ќа станции. Ќу как ¬ыхино, только Ѕирюлево, на фоне √олливуда.
duke0012 (700x525, 38Kb)
» спасительный поезд в голливуд. Ќе, “–јЌ—ѕќ–“.
duke0013 (700x525, 49Kb)
ј что там дальше? ј там больна€ фантази€ на тему разворота поездов на конечной станции.
больна€ фантази€ на тему разворота поездов на конечной станции
» подобие ћосэнерго “Ё÷-26.
duke0014 (700x525, 40Kb)
¬от така€ фантази€. » ведь врем€ находил на вс€кую ерунду)



Ќу а теперь вкратце о транспортной ебаной компании  »“.
Ќеделю груз в 3кг из …ошкар-олы шестизначной стоимостью болталс€ по гр€зному складу, покуда мне ебали вола про доставку, что она со дн€ на день будет. » ниху€, сегодн€ забрал с логистического центра. “Єтка на выдаче округлила глаза, почитав комментарии из кол-центра к заказу: € умею заебать. —ыканомил 700 рупий, но проебал неделю из-за этих мудоЄбов. Ќе, ну ладно персонал не хамистый, но отвечать за просрочку не хот€т.
ј на измену присел после того, как нагуглил "тк кит говно" - подставной сайт http://kit.transportnaya-kompaniya.com/otzyvy/, сделанный ƒеловыми Ћини€ми, на котором поливают говном тк кит. » ведь столько фантазии на столько негативных отзывов просто не наберЄтс€ ни у одного проплаченного тролл€ - отзывы реальны!!!  омпани€ люта€!!! Ќекоторые грузы тупо тер€ютс€! ј это могут быть и уникальные вещи, стоимость которых не покрывают сроки на изготовление.  ороче из двух зол выбирают меньшее, пойдЄм к деловым лини€м.

—амый непри€тный пример из истории с доставкой - из первых компьютеров, (не найду сейчас), то ли альтаир 8800, то ли первый эпл, был варварски утер€н или растащен при транспортировке вот такими же мудаками, как “   »“.
–убрики:  бывает)
этот удивительный мир вокруг нас

ћетки:  

’ера ж ты лысого

ƒневник

—уббота, 18 »юн€ 2016 г. 22:43 + в цитатник

добьЄшьс€ аддитивным методом изготовлени€ точностей и допусков лучше, чем субтрактивным - по жизни даже на базаре или у барыг точнее получаетс€, если убирать, чем добавл€ть.


novo_cordon2 (416x700, 288Kb)
novo_cordon2_series (525x700, 93Kb)

ј наука, тем временем, не дремлет. √ода три назад таки удалось родить приборчик-анализатор Ёћѕ, по ссылке ворклог разработки и допиливани€, техпроцесс отлажен, оснастка есть и в принципе, можно при некотором усердии запустить четырехзначные серии (если оптимизировать стоимость комплектации).  орпус - чиста€ фрезеровка.




¬рем€ идЄт, треть€ верси€ корпуса и самого прибора в процессе. »з свежака планируетс€ (не по ““’, это уже к сайту) - резистивный тач + силиконова€ клавиатура с подсветкой, меньше винтовых соединений, встроенный ј Ѕ - всЄ это повышает юзабилити Ђкарманногої прибора. » вытекает, раз —¬„ 12 √√ц, то корпус - сплошна€ фрезеровка ƒ16.  лавиатура оставлена ввиду того, что наша клиентура сЄж промышленного направлени€, преимущественно суровое мужичьЄ праворукое, где не прин€то терпеть глюки и неверные попадани€ в дисплей. ѕидарасов, леворуких и иных Ћ√Ѕ“ в сфере »Ѕ ещЄ не встречал :P ¬ниманию читател€ представлен виновник темы поста - прототип, напечатанный на бытовом 3D-принтере.


novo_cordon_3_prototype1 (700x525, 82Kb)
novo_cordon_3_prototype2 (700x525, 77Kb)
novo_cordon_3_prototype3 (700x525, 82Kb)

ѕугач положил р€дом чтобы читатель пон€л суть трЄх полосочек. Ёто мозг сам неосознанно спроецировал - пр€мые углы, скосы, приборчег уже не мыльница как прошла€ верси€, а более пацанский, устрашающий. ¬о врем€ спецпроверок анализатором Ёћѕ самую забавную реакцию вызывает звук, которым сигнализируетс€ гор€чо-холодно по рассто€нию от у€звимости - население вылупл€ет глаза Ёто, таксзать, фишка.


¬ернЄмс€ к нашим баранам, прототипирование 3D-принтером и количество мата при допиливании.


ѕроизводственный пример: у нас есть потребность заделать несколько дес€тков алюминиевых корпусов подобного вида по уже спроектированной плате, местам установки всего навесного обвеса типа силиконовых или плЄночных клавиатур, разъЄмов —¬„ PCB mount на плату, дисплей со шлейфом. ѕри отрисовке модельки, разумеетс€, учтены допуска на плату в виде рассто€ний до стенок корпуса 0,5мм, дл€ установки диспле€ в м€со алюмини€, дл€ вкручивани€ разъЄмов предусмотрены дюймовые резьбы, мать их Єб. “о есть этап, когда завершЄн концепт в голове с окончательным “«, утверждЄн внешний вид с погрешностью на юзабилити и перемещение навеса в пределах разумного 1мм, опустим подробности работоспособности —хЁ как основной детали. ѕрототипировать на металле, из расчЄта пор€дка 6-7 тыр. за один закреп (сторону обработки), выходит 21 тыр. только за программу „ѕ” фрезеру, с соблюдением допусков 0,1мм и кратким документом не-≈— ƒ вида, указывающим на резьбы и при необходимости спецтребований. »так, за 21+(10...20%) мы получим металлический прототип, который при незначительном изменении модельки повлечЄт за собой перпеписывание программы „ѕ”. «ато велика веро€тность, что прибор с —¬„-составл€ющей будет работать Ђиз коробки, с мелкими огрехамиї, которые исправл€ютс€ путЄм сдвигани€ мест установки кнопок в корпусе на 0,5мм или где-то глубину надо будет добавить. ¬ыгодно? “олько если концепт не поплывЄт, что никак не в€жетс€ с agile-методами разработки всего и вс€.


¬ыход - вырастить модельку на 3D-принтере за 2500 р. ƒа, этот корпус выращен именно за эту сумму. Ќа бытовом принтере, точность которого 0,3...0,7мм и 90%-заполнением. „то мы получаем на выходе? Ќечто, внешне лишь напоминающее прототип. „итаем ликбез. ƒа, бытова€ 3D-печать годитс€ реально только дл€ изготовлени€ бытовой хуйни типа чашечек, статуек шестипалых п€тихуев или черепа своего врага. —ерьЄзный полноценный прототип за 2,5к из ABS или PLA вообще р€дом не стоит с цельнометаллическим. –азгадка проста - за€вленные допуска плывут в большую сторону, ибо нить филамента при выдавливании экструдером под действием силы т€жести расплющиваетс€, следующий слой забирает ещЄ несколько микрон от высоты сло€ за счЄт остывани€, в итоге две плоские детали мало того, что не сход€тс€ по пазам (где допуска, оп€ть же, 0,5мм на сторону), так ещЄ и вместо 23,4мм получаетс€ вместо 21,1мм высоты. ’уйн€ хуйнЄй.


—ледующа€ проблема заключаетс€ в допиливании подобных игрушек с поплывшими допусками, чтобы можно было установить навес. ƒисплей сюда не влезал, пока € не убрал бормашинкой 1мм с внутреннего габарита диспле€. Ѕлаго бормашинка при работе прогревает пластик, и он слегонца сплавл€етс€ с сосед€ми, иначе бы у нас была не ровна€ стенка, а рассыпающа€с€ X-образна€ структура внутри напечатанного образца. «десь же кроетс€ и матерщина по части вкручивани€ разъЄмов, ибо бытовой 3D-принтер с трудом осиливает даже эдиссонову резьбу E27 и резьбы на бутылочных крышках - начинаешь пропиливать - кишки структура наружу, лохмоть€, не говор€ уже про резьбы M1,6. ¬ общем и целом, в данном прототипе прибора без проблем влезли только клавиши в прорези.


ќтныне только промышленное прототипирование! ≈сть всЄ же у технологии плюсы - промышленна€ печать фотополимером. ѕрозрачный такой материал, слайсер делает не структуру, а сплошную печать, допуска плывут меньше - 0,1мм вполне хватает на всЄ. » действительно, есть смысл. “олько цены кусаютс€ хорошо так, данна€ игрушка, ещЄ один форм-фактор диктофона дл€ лакеев габаритом с бейдж, стоил 1700 рублей. «а огрызок прозрачного пластика. Ѕез обработки.


novo_loskut_prototype_1 (700x226, 115Kb)
»з того же самого материала, но напечатано в 1000 км от города. 900 рублей, материала раза в 3 больше ушло по весу. –азница в логистике.
novo_potok_prototype_lrv (525x700, 323Kb)
ќднако, тут есть смысл подсчитать немного по-другому. —роки не ебут.

¬ариант 1: рисуем модельку (t1=$1), платим за программу „ѕ” (t2=$2), платим за первый образец (t3=$3), ниху€ не лезет никуда, вносим поправки в модельку и оформл€ем ≈— ƒ (t4=$4), платим за поправки в „ѕ” (t5=$5) и за серию (металл + машинное врем€, львина€ дол€) (t6=$6). –азумеетс€, здесь меж t3 и t5 может быть конский гап в мес€цы ибо при запуске серии таки отлаживаетс€ всЄ, и не кажда€ бухгалтери€ может позволить раст€гивать больше, чем на квартал.



¬ариант 2: рисуем модельку (t1=$1), печатаем на промышленном 3D-принтере фотополимером прототип (t2=$2), ≈—“≈—“¬≈ЌЌќ, ниху€ не лезет никуда, вносим поправки в модельку и оформл€ем ≈— ƒ (t3=$3), платим за программу „ѕ” (t4=$4) + серию (t5=$5). “ут уже мы отв€заны от бухгалтерского гапа т.к. t1 и t3 фактически происход€т здесь, совмещение t4 и t5 - дело субподр€дчика, как и их обкатка программы „ѕ” (пилотный образец), и растворение t4 в t5 тоже; t2 - отдельным титулом.



 оличественные показатели в деньгах t1...t6 могут варьироватьс€, особенно если печатать в варианте 2 на говЄном бытовом 3D-принтере. ≈сть ещЄ комбинации вариантов, например, с серьЄзным механическим заводом, которому помимо 50% предоплаты t2, t3, t5 и t6 (согласно ¬арианту 1), то есть, полсуммы заморозить, нужно сразу же получить t1 + (0,5...1)*t3. –асшифровываю - завод берЄтс€ под ключ сделать всЄ, но при этом документы в ≈— ƒ уже должны быть готовы (ибо все претензии по вине производител€ направл€ютс€ в отдел рекламаций только с указанием на отступлени€ от чертежа), прототип изготавливаетс€ и уже не очень-то развернЄшьс€ в изменени€х модели, ибо за ним последует изменение чертежей, а следовательно, серьЄзна€ переделка „ѕ”. —ледовательно, при мутном концепте и agile в части “« (при его наличии!!!) вообще не работает вариант. Ќаебавшись пару раз, по жизни выбираю вариант є2 как оптимальный по рискам - подтверждение с прототипами см.в самом низу поста, где € почти что горжусь собой. ¬ варианте первом был даже недавно случай, что программист-станочник крепко психанул по части переделки программы под новый габарит. ƒа ладно, счЄт оплачен, но вот эти эмоции слушать € ебал.



Ќу и сроки, конечно же, сроки. :(


¬ывод поста, который хочу донести: 3D-принтеры бытовые говно, непригодное дл€ сколько бы то ни было качественного прототипировани€, вне зависимости от кривизны рук оператора.
 ачество - степень соответстви€ идеалу (модели).
—тоимость разработки и запуска серии с прототипированием на годном фотополимерном принтере всЄ равно выходит меньше по расходам на R&D, чем запуск металлического фрезерованного прототипа.

≈щЄ novo_mag_cardreader_prototype (330x700, 210Kb) один пунктик св€зан с тем, что нужно подружить корпус с печатной платой. —тоимость всего вышенаписанного - безумна, и когда начинаетс€ речь о том, чтобы Ђсделать серию корпусов заранее без единого прототипа печатной платыї, у мен€ дым из ушей идЄт. —оглашусь, что годна€ —хЁ - залог успеха, и рисовать/отлаживать еЄ долго, однако это всего-лишь картинка, имеюща€ бесконечную вариативность исполнений на печатной плате, знай себе двигай дорожки.  орпус дружит с ѕѕ в местах креплени€, разъЄмов и обвеса, сто€щего на плате (pcb-mounted outlets and etc) и конечно же, по высоте SMD-компонентов. √отов уже предлагать разрабам настолько несуразные варианты и методы agile r&d, где стоит потратить дополнительные 2-3 тыр на пустую плату без дорог и комплектации, лишь с посадочными местами под обвес и креплени€ми, чтобы на цену устройства не налетели лишние t7=$7 в части разводки первого прототипа, переразводки, и ещЄ раз переразводки без нарисованной до конца —хЁ. ѕотому что после изготовлени€ пустой платы с обвесом € могу с чистой совестью окропить св€той технической водой данный Ђпрототипї платы, запустить вышеуказанные процессы изготовлени€ серии корпусов (t1...t6) и ни на 0,5мм не поступлюсь посадочными местами. Ќа фото пример подгона корпуса под готовую плату Ђщад€щегої картридера, который smart-карты не царапает. ќсновное внимание здесь уделено выборкам в металле под комплектацию, т.е. рисовал уже по разведЄнной плате. „удеса в толщинах.


Ўкурно-денежна€ составл€юща€ конфликта заключена в том, что при равной стоимости t1 (разработка модели) у конструктора и трассировщика печатных плат (ну, по сути, позиционирование –Ё  и вс€ разводка без отладки —хЁ), дальнейшие этапы изготовлени€ плат сто€т 2-4 тыр + количество (где 2-4 тыр есть единовременна€ плата за подготовку производства у подр€дчика, изготовление фотошаблона), и никакой работы не предполагаетс€, сроки изготовлени€ ѕѕ сжимаютс€ подобно очку до 36 часов. ѕосему не надо путать интеллектуальную работу программиста-станочника с опусканием стеклотекстолита в хлорное железо - за производителем ѕѕ при равенстве t1 умственного труда не предполагаетс€, следовательно, сроки и цена существенно меньше, а значит, вариативностью и количеством прототипов ѕѕ можно вертеть с куда большей степенью свободы, нежели корпусной частью.




» да, таки к слову о похожести корпусов всех носимых изделий и того, что у всех машин 4 колеса. Ќаконец завершающие стадии разработки того-самого-прибора, в€лотекуща€ разработка которого зан€ла лет этак семь (корпус разрабатывалс€ с периодическими прототипами 3 года):


novo_potok_timeline (700x306, 200Kb)
 стати у чЄрного печатного прототипа посередине была сзади запроектирована безумно удобна€ ручка-ножка, котора€ не прошла в серию лишь потому, что можно еЄ опционально включать, а не уродовать корпус стойками под неЄ.
novo_potok_prototype_handle (378x500, 160Kb)
» мастер-модель дл€ силиконовой отливки. ÷еликом напечатано из прозрачного фотополимера за безумные деньги, ошкурено и отшпаклЄвано. ¬нутренние поверхности (не видные клиенту, на примен€емость не вли€ет) оставлены с артефактами 3D-печати (слои).
ћастер-модель! –уками не трогать!
«а три года таки от полурабочего прототипа пришли к изделию.
novo_potok_izdelie (477x700, 78Kb)

 орпус стоит нормальных доступных денег, не заоблачных, но и не 160 рублей как при его штамповке тыс€чами. Ћична€ гордость - применение ¬џЎЎ≈… математики в части поверхностей  унса (скруглени€ нижних углов). —ейчас делаем гражданскую версию прибора, где стоимость безумно важна. ¬кратце расклад таков: 200 тыр. потрачено на первые 25 штук и мастер-модель. ѕоследующие корпуса (при парти€х в 25 штук), отлитые в силиконовой форме в одном из городов нечерноземь€, будут стоить около 4500 за штуку. — увеличением партии цена падает до гражданско-приемлемых показателей. »грушка достаточно универсальна€, уже запланировано ещЄ два носимых прибора в данном корпусе, а значит, ещЄ один шажок к вечности

–убрики:  этот удивительный мир вокруг нас

ћетки:  

Ётимологическа€ ошибка

ƒневник

—реда, 29 ћа€ 2013 г. 02:33 + в цитатник
 ак гласит педики€:
Hex (hexadeсimal) Ч обозначение шестнадцатеричной системы счислени€.
¬ переводе с немецкого ЂHexenї означает Ђведьмы, колдуньиї, а Ђto hexї Ч Ђколдоватьї.
“о-то € не мог долгое врем€ уловить св€зь меж фентезийной игрушкой, именованной превосходной степенью степени счислени€. Ђќн куда более шестнадцатеричен, даже более, шестнадцатеричнейший...ї.
“еперь, обнаружив пропажу своего html-сборища полезных функций, € буду публиковать их пр€мо тут. ћне насрать на то, что это вовсе не дн€фковый формат, просто сюда € имею быстрый доступ, а ещЄ больше мне насрать на мнение окружающих, что VB6 отнюдь не сама€ лучша€ среда реализации всего-всего, € как  ен —ильверман, отрабатываю алгоритмы и принципы в самом что ни на есть допустимо-нестрогом и в то же врем€ однозначно интерпретируемом €зыке BASIC. «ачастую пусть так и остаЄтс€, ибо зачастую производительность Ђи так сойдЄтї. «атем весь этот индусский код можно запилить в ASM, однако VB хорош тем, что доступен даже из Excel.
»так, не отвлекаемс€.
ѕеревод кодовых страниц CP1251 и CP866 (VB, QB)
Function String1251To866$(strWin$)
   '»з кодовой страницы 1251 в 866
   TwinTodos$ = ""
   For i = 1 To Len(strWin$)
      k = Asc(Mid$(strWin$, i, 1))
      If k >= 192 And k <= 239 Then
        TwinTodos$ = TwinTodos$ + Chr$(k - 64)
      ElseIf k >= 240 And k <= 255 Then
        TwinTodos$ = TwinTodos$ + Chr$(k - 16)
      ElseIf k = 9 Then ' онверси€ табул€торов
        TwinTodos$ = TwinTodos$ + Space$(8)
      Else
        TwinTodos$ = TwinTodos$ + Chr$(k)
      End If
   Next i
   String1251To866$ = TwinTodos$
End Function

Function String866To1251$(strDos$)
   '»з кодовой страницы 866 в 1251
   TdosTowin$ = ""
   For i = 1 To Len(strDos$)
      k = Asc(Mid$(strDos$, i, 1))
      If k >= 128 And k <= 175 Then
        TdosTowin$ = TdosTowin$ + Chr$(k + 64)
      ElseIf k >= 224 And k <= 239 Then
        TdosTowin$ = TdosTowin$ + Chr$(k + 16)
      ElseIf k = 9 Then ' онверси€ табул€торов
        TdosTowin$ = TdosTowin$ + Space$(8)
      Else
        TdosTowin$ = TdosTowin$ + Chr$(k)
      End If
   Next i
   String866To1251$ = TdosTowin$
End Function

Ќахождение точки пересечени€ двух отрезков (VB,QB)
Sub LineSegmentCross(x1, y1, x2, y2, x3, y3, x4, y4, xCross, yCross)
  ' —обственно сама выходна€ функци€
  LineEquation x1, y1, x2, y2, AP1, BP1, CP1
  LineEquation x3, y3, x4, y4, AP2, BP2, CP2
  LineCrossing AP1, BP1, CP1, AP2, BP2, CP2, xCross, yCross
End Sub

Sub LineEquation(x1, y1, x2, y2, AP, BP, CP)
  ' ѕеревод координат линии по двум точкам X,Y в коэффициенты
  If x1 = x2 And y1 = y2 Then
    AP = 0
    BP = 0
    CP = 0
  Else
    AP = y2 - y1
    BP = x1 - x2
    CP = -AP * x1 - BP * y1
    coeff = Sqr(AP * AP + BP * BP)
    AP = AP / coeff
    BP = BP / coeff
    CP = CP / coeff
  End If
End Sub

Sub LineCrossing(AP1, BP1, CP1, AP2, BP2, CP2, xCross, yCross)
 'Ќахождение пересечени€ линий
 Delta = AP1 * BP2 - BP1 * AP2
 If Delta <> 0 Then
   xCross = -(CP1 * BP2 - BP1 * CP2) / Delta
   yCross = -(AP1 * CP2 - CP1 * AP2) / Delta
 End If
End Sub

јлгоритм —азерленда- оэна, любезно транслированный одним добрым человеком из википедии на VB
ƒл€ Ђурезонивани€ї (обрезани€) с сохранением углов и направлений координат отрезка (X0,Y0,X1,Y1), если оный выходит за рамки xMin,xMax,yMin,yMax. ¬озвращает False если он не пересекает ограниченную область.
Private Enum EdgeCode
 ecNone = &H0
 ecLeft = &H1
 ecRight = &H2
 ecBottom = &H4
 ecTop = &H8
End Enum

Public Function CohenSutherlandLineClip(x0, y0, x1, y1, xMin, xMax, yMin, yMax) As Boolean
 '—ама процедура алгоритма
 Dim accept As Boolean, done As Boolean
 Dim outcode0 As EdgeCode, outcode1 As EdgeCode, outcodeOut As EdgeCode
 Dim X As Double, Y As Double
 accept = False
 done = False
 Call CompOutCode(x0, y0, xmin, xmax, ymin, ymax, outcode0)
 Call CompOutCode(x1, y1, xmin, xmax, ymin, ymax, outcode1)
 Do
  If (outcode0 = ecNone) And (outcode1 = ecNone) Then
   accept = True
   done = True
  ElseIf ((outcode0 And outcode1) <> ecNone) Then
   done = True
  Else
   If (outcode0 <> ecNone) Then outcodeOut = outcode0 Else outcodeOut = outcode1
   If (outcodeOut And ecTop) Then
     X = x0 + (x1 - x0) * (ymax - y0) / (y1 - y0)
     Y = ymax
   End If
   If (outcodeOut And ecBottom) Then
     X = x0 + (x1 - x0) * (ymin - y0) / (y1 - y0)
     Y = ymin
   ElseIf (outcodeOut And ecRight) Then
     Y = y0 + (y1 - y0) * (xmax - x0) / (x1 - x0)
     X = xmax
   ElseIf (outcodeOut And ecLeft) Then
     Y = y0 + (y1 - y0) * (xmin - x0) / (x1 - x0)
     X = xmin
   End If
   If (outcodeOut = outcode0) Then
     x0 = X
     y0 = Y
     Call CompOutCode(x0, y0, xmin, xmax, ymin, ymax, outcode0)
   Else
     x1 = X
     y1 = Y
     Call CompOutCode(x1, y1, xmin, xmax, ymin, ymax, outcode1)
   End If
  End If
 Loop Until done
 CohenSutherlandLineClip = accept
 End Function

 Private Sub CompOutCode(X, Y, xMin, xMax, yMin, yMax, code As EdgeCode)
   '¬ычисление бинарного кода состо€ни€ пр€мой (отрезка)
   code = 0
   If (Y > yMax) Then code = ecTop _
   Else If (Y < yMin) Then code = ecBottom
   If (X > xMax) Then code = code Or ecRight 
   Else If (X < xMin) Then code = code Or ecLeft
 End Sub

јлгоритмы сортировки массивов
    For i = 0 To UBound(MyArray) '—ортировка пузырьком
        For j = i + 1 To UBound(MyArray)
            If MyArray(i) > MyArray(j) Then
                temp = MyArray(i)
                MyArray(i) = MyArray(j)
                MyArray(j) = temp
             End If
       Next j
    Next i
'---------------------------------------------
' —ортировка выбором (в принципе, N = UBound(MyArray)
         For q = 1 To N - 1
            Min = MyArray(q)
            k_min = q
            For j = q + 1 To N
               If MyArray(j) < Min Then
                 MinY = MyArray(j)
                 k_min = j
               End If
             Next j
             MyArray(k_min) = MyArray(q)
             MyArray(q) = MinY
         Next q

ѕреобразование координат 3D в 2D-проекцию на экране (догадываетесь, к чему € веду всем этим кодом;)?)
Dim camX, camY, camZ    'јбсолютные координаты камеры
Dim aX, aY '”глы наклона камеры по ос€м X и Y
Dim xSize As Integer, ySize As Integer '–азмеры экрана (видимой области)

Function Calculate(X, Y, Z, xscr, yscr) As Boolean
  '—обственно, функци€ проекции из координат точки в экранные
  '√оворит True если надо рисовать
  CalculateTemporaryAxis X, Y, Z, tmpX, tmpY, tmpZ
  If tmpZ > 0 Then Calculate = False: Exit Function

  tempZ = ySize / tmpz
  xScr = Int(tmpX * tempZ + (xSize / 2))  'xSize
  yScr = Int(tmpY * tempZ + (ySize / 2))
  Calculate = True
  '¬ формулах проекции заключен FOV
End Function

Sub CalculateTemporaryAxis(X, Y, Z, tmpX, tmpY, tmpZ)
 'ѕриведение координат из абсолютных к оси Z, направленной из камеры
 tmpX = (X - camX) * Cos(aY) - (Z - camZ) * Sin(aY)
 tmpZ = ((X - camX) * Sin(aY) + (Z - camZ) * Cos(aY)) * (Cos(aX) - (Y - camY) * Sin(aX))
 tmpY = tmpZ * Sin(aX) + (Y - camY) * Cos(aX)
End Sub
soxie_pure_visual_basic_3d (700x406, 55Kb) soxie_pure_visual_basic_3d_1 (700x406, 153Kb)
–убрики:  этот удивительный мир вокруг нас

ћетки:  

 —траницы: [1]