text:
• entries
28
73
• views
23901

Development updates on all things 2D

## A pleasant stop in a pleasant nook of the internets

Damn, it's been a long time.

It's really fun to come back and look at the journals after so many months and see all the progress people are making. Cheers to all of you for cranking on the cool stuff.

What I have been doing? Eh, nothing much. Making games, getting little sleep, reviewing games. Ya know, the usual.

Anyway, in June I wrapped up my latest project, Little League World Series 2008. Talk about stressful. I was the lead programmer and we had a 5 month dev cycle so there was a whole lot of code flying out my fingertips. Despite the pain, it ended up being a fun little game, and has scored alright with the press.

Since July, I've also been a staff reviewer for GameTunnel.com as a member of the panel, reviewing indie games each month. That has been a hell of a lot of fun, and I hope to see some of you fella's stuff up there in the coming months. The last panel: Game Tunnel September Panel

One thing is for sure, I've been in the industry for about a year and a half now, and it is has totally destroyed my indie work at home. Thankfully, I've been able to get some code written, and my faithful artist is always there with new pretty pictures. With some luck, we might get something out next February; a casual action/arcade game. But luck seems to be in short supply of late :)

## DS programming, 2D animation tools, etc.

Although it's hard to believe, I've been at my current job for a year now, and it's unfortunately been damn near the same for a journal entry.

Anyways, to the fun stuff. The first game I was lead programmer on was just finished last month, and is currently going through Nintendo's lot-check. Garfield's Fun Fest is a little 2-D platformer with a couple of mini-games tossed in for good measure. It feels pretty good to finally finish it, and I'm looking forward to seeing it on shelves next month.

Here are a few screenshots.
GFF Screens at IGN

Free time has been a bit sparse, but I've been working on a 2D animation tool at home. My goal was to create a tool that could be used for a game such as Odin Sphere, but I ended up scaling it back considerably for the sake of getting it done.

Protonic 2D Animation Tool

Also, here is an early preview of it. I'm looking for any kind of feedback on it: bugs, missing features, difficulty to use, etc. Once finished it will be released free (as in beer) so hopefully any feedback I get will make it into something more valuable for the community.

It's written in C# so .NET is necessary, and there is currently no documentation. The idea is that it should be 'pick-up-and-use' friendly, although I know I haven't achieved that yet.

Anyways, thanks in advance for any feedback!

## No more 360 for me :(

11 days.

That's how long it took my brand new 360 to get the red ring of death. A brand new 360 -- the \$350.00 wireless bundled with Forza/Marvel UA. 11 days. What the fuck Microsoft?

I didn't even get to finish Bioshock (hell, I only played it like 4-5 times)!

So anyways I take it back to Best Buy tonight and stand in the horribly long customer service line, and the guy working asks me "So you want to go get another one?"

Silence.

With some reluctance after thinking about the pending releases of Assassin's Creed and Mass Effect I utter "No, thanks. I'll take store credit." -- and thus is the story of me casting down Microsoft's poorly made mega-machine into the depths of red-ring hell.

As for the store credit, well, let's just say my DS library got *much* larger :D

## Pixel Art and Nissans

Still working on my pixel-art, and progress is slow but steady on my shooter. I have rewritten a lot of my old 'core' systems, to make them easier to use and less prone to breaking. I expect to have a gameplay video soon ( < 3 days) and a playable demo for anyone curious within 2 weeks.

I would also really like to enter 4E6 this year, but since I always end up crunched for time, I will likely just 'mod' my shooter. I guess we'll see how that goes. Ponies, explosions and crystals seem like a lot of fun though (I hate the thought of incorporating accountants into my game).

In work related news, I am the lead programmer for one of our new DS projects which is pretty cool. It is smaller game, but it is a 2D platformer so that should be a lot of fun.

And finally, I decided to go buy a new car the other day, and finally indulge in the guilty pleasures of having a good job. I knew what kind of car I wanted, so it was only a matter of finding the exact one I wanted.

I ended up with an '04 Nissan 350Z. I really love it -- lots of comfort and lots of performance all bundled up into an attractive package. In the end I chose the Interlagos Fire color, and ended up with the 6-speed 'Track' trimline (different wheels and Brembo brakes all around). I took a picture of mine, but my flash drive is MIA so here is a generic image that is actually 99% the same as mine.

Other than that, life is good (and I finally got a 360 with Bioshock!) :)

## I smell a shmup...

The past few days I have finally had some time off from work and went back to hacking away at my 2D stuff here at home. Here is the current state of things.

The game I am going to make: A post-apocalyptic-ish shoot em up. After making the brief Fantasm Fortress a few months ago as an excercise in 24 hour development, I really got the itch to do a shmup right. That is, FF was about 30 seconds worth of fun, and the code behind that 30 seconds was so inflexible and single-minded, it could not be easily extended or even modified for that matter.

I actually intend to make this one a full game (as much as 3-5 levels can be considered a full game), so I want to do things right from the beginning.

Also, this is a great opportunity for me to blind all who see this with my astonishing art skills. The blob of pixels that I can put forth onto a digital image are the very spawn of Medusa's hair. Ugliness aside, creating shitty pixel art is actually kind of therapeutic for me. Weird, eh?

A sampler or two:

So there you can see my first attempts at a soldier, and some environment destructibles. The sad thing is, as bad as these are, I actually took a lot of time to do them, so I can only imagine how things will look later when I don't spend any time on them...

Unfortunately I don't have much to show screenshot-wise at the moment, but hopefully I can manage some screens by the end of the week. The last day or so I have spent a lot of time [re]working my texture/model managers. My custom animation data files are so horrid, that I thought I'd share an example with you. Yep, I am still using .ini files with this particular version of my framework. I have some Xml stuff scattered here and there, but converting the code necessary seems like a huge [and somewhat unnecessary] pain. So it goes.

The soldier animation file:
[Model]ID=SoldierNumAnimations=4[Animation_0]ID=Unarmed_IdleActionFrame=1NextAnimation=Unarmed_IdleNumFrames=1[Animation_0_0]TexRef=SoldierCell=0Time=0[Animation_1]ID=Unarmed_WalkActionFrame=1NextAnimation=Unarmed_WalkNumFrames=2[Animation_1_0]Cell=1Time=100TexRef=Soldier[Animation_1_1]Cell=2Time=100TexRef=Soldier[Animation_2]ID=Pistol_IdleActionFrame=1NextAnimation=Pistol_IdleNumFrames=1[Animation_2_0]Cell=3Time=0TexRef=Soldier[Animation_3]ID=Pistol_WalkActionFrame=1NextAnimation=Pistol_WalkNumFrames=2[Animation_3_0]Cell=4Time=100TexRef=Soldier[Animation_3_1]Cell=5Time=100TexRef=Soldier

...and the accompanying Soldier Texture file. What a hoot.
[Texture]ID=SoldierFilepath=Data\\Soldier\\Soldier.pngNumCells=6[Cell_0]X=0Y=0W=48H=48RCX=24RCY=36[Cell_1]X=48Y=0W=48H=48RCX=24RCY=36[Cell_2]X=96Y=0W=48H=48RCX=24RCY=36[Cell_3]X=0Y=48W=48H=48RCX=24RCY=36[Cell_4]X=48Y=48W=48H=48RCX=24RCY=36[Cell_5]X=96Y=48W=48H=48RCX=24RCY=36

Now if only I had a tool to generate those damn files for me...

## Crunch over -- let the games begin...well, kinda.

So crunch is pretty much over for me at work; we shipped Boop and my current tasks are not too time sensitive.

Also, for those of you interested, a game that I spent a lot of time on, and one that I will be spending more time on soon, has been announced:

The Harvest Moon Killer

It is an amazingly deep and complex game for the DS, and actually quite fun. Anyways, it is announced and should be hitting stores in November-ish. If you like me, you will buy it, and if you don't like me, well, humor me.

Having some more time on my hands it is back to developing PC stuff. Zerowolf has put up a 48 hour game dev contest for this weekend, and although I kinda sorta have plans for the weekend, it is hard to say no when his desk is literally 10 feet away.

So we'll see how that goes. I'll finish something, although whether or not it will be a game is yet to be seen.

And as always, life keeps rolling on...

## No Bioshock for me :(

This is what Bioshock looks like on a 9600 :(

I guess I *really* have to get a 360 now, because I feel if I have to make a significant purchase to play the game, I would rather have a 360 than an 8800.

Also, Betty finally shipped! Yay, happy days!

## Redbull aye

So its 2:15 a.m. and I am still at work. The end is no where in sight.

I now feel like a *real* game developer. Welcome to the real world, Coby, welcome to the real fucking world.

In related news, we ship Betty Boop tomorrow. Yay! Now Satan, give me back my soul. Thanks much.

As the title suggests, I believe a paradigm shift is due in my after hours development mindset. Up to this point, I learned to make games with ambitions of becoming a 'true indie' ie making quality shareware games while living out a meager and poor existence. Sounded like fun.

Well, now I do make commercial games, and although they are in no way indie, it satisfies that itch. So at this point I guess I can do what every developer should be doing from the start: making really fun freeware games. The kind of games that I really want to make. Fun times ahead? We'll see...

Unfortunately I haven't updated recently due to:
(1) Being on crunch at work (thank god we just shipped Master)
(2) Developing tools for work at home to make my life at work better

I actually feel moderately comfortable with C# these days and love a lot of the .NET library's capabilities. That said, I will only write tools with C#, as I hope to make all of my future hobby works cross platform and possibly open source.

Final notes:
The Gearo team has disbanded at the moment due to personal issues in everyone's lives: new cities, new jobs, and newborns. I am sure we will get back together in the future, when it is a better time for everyone.

Hopefully I'll update soon with at least an idea of what kind of game I want to make (I'm thinking small scale at the moment) and then the screenshots and videos should start rolling in. As always, life is good =)

## Console Development...

It's been a week since I've started at my new job. In that very short time I have learned how different console game dev is from PC game dev. Specifically, working with the DS. My time with the Wii has been pretty limited so far, and most of my efforts have concentrated on the DS.

It is much, much different. Efficiency is so important on such a limited platform. A good thing I suppose, it's just taking me a little bit of time to adjust. Working on games all day (and for a living) is turning out for the best, and I think I'm really going to enjoy it.

I'll be entering Trapper's MAGIC contest, albeit with a late start. I actually didn't even get started until last night, but it looks like I will be able to finish something decent. David, the artist for Gearo, is going to work with me so it should look ok as well =)

The general idea is that the game will be a vertical platformer, but you will be on the outside of the tower instead of the inside. In this regard, you will 'wind your way around' the outside of the tower, trying to get to the top. There is no ground level entrance into this mystical bastion of evil, hence the outside excursion. The rotating tower thing is basically a direct rip-off of an old atari [c64?] game called Nebulus.

Anyways, what awaits at the top of the tower is TBD. Probably on the 11th, right before the deadline.

Hopefully I'll get some screens up later tonight or tomorrow.

## Fantasm Fortress Demo

Well, I didn't get to work on it for 24 hours due to apartment hunting, but I did manage to get some stuff into it. The total dev time to this point is 13.5 hours.

Some more gameplay action:
">

I added in entity/entity collision, shadows, a new enemy type, the frost cannon, and reworked some of the particles. It still isn't much of a game, but you might find it entertaining for 3 minutes.

Controls: WASD/Arrows to move and mouse to aim. Left mouse button to fire the plasma cannon and right mouse button to fire the frost cannon.

There is no real specific aim to the game yet -- it is perpetual. The eyeballs will continually spawn at a successively faster rate and eventually the 'mangler' will show up. You can kill the mangler, but he will continue to respawn as well. The only real metric in the game is the 'souls' counter, which is reset if you die. But even that is a fairly shallow metric.

For now, hopefully it is just enjoyable to splatter things =)

The demo:Fantasm Fortress V0.135

What's next? Well, this was just a small diversion from Gearo, which I am working on right now. I may come back to it from time to time to make it a real game, but I am open to suggestions on how to make it a real game, instead of a spawn-kill fest...

## Fantasm Fortress -- Iteration 1

Alright, well, 9 hours have passed since I started on this silly 24 hour game. Out of the 9, a solid 6 were actually spent on development. My art sucks and takes a brutally long time =(

Anyways, the first video:
">

HopeDagger suggested a 'crimsonland' type shooter only moments after I had already started down that path =) Not much there yet, but I hope tomorrow to add some nifty effects, more enemies, and some gameplay twists to break up the shmup monotony this is.

So, 8 hours of sleep gives me 7 more hours of development. Sounds good!

## A 24 hour diversion

Getting a job in a new city, and moving in less than two weeks is quite the task :/

Anyways, the 'no-compete' and 'inventions' contracts between myself and BLS have been finalized, so any hopes of commercial indie success are at bay for a while :)

It looks like they will allow me to finish Gearo under my own terms, since so much development has already gone into it, but after that, they own all of my new code. (Strange to think that anyone would actually want to own the messy stuff I call my code).

So what does this mean for my participation on gamedev since I won't be able to disclose much of my project at work? Well, I don't know yet. Apparently I can release freeware games (pending approval by my superiors) so I will probably just make much smaller, shorter games post-Gearo.

Actually, I have about 24 hours from now until I actually have 'to do something' so perhaps a short diversion is in order? Hmmm. Ok, I think so. Ima write a short and sweet game in the next 24 hours as a diversion from all of the pain of moving and from the code mangling of Gearo. I have never written a game in such a time frame, so this should be interesting...

Requirements:
No animation
SFX and a music track
No premade levels -- all levels are random/procedural
Single screen of mayhem -- no scrolling
2D (was there ever any doubt)
Things must explode
100% Programmer Art
...

Feel free to suggest anything else that should go under the requirements. I really have no idea what I am doing O_o

## Wii development here I come!!

Things have been crazy and bizarre lately. In short: I am now a professional video game developer =D

The short story:
My research work under a federal grant is ending May 31st, so I have been job seeking. A little bit tired of chemistry, I decided to switch careers and look into software engineering. After countless interviews, programming tests, etc. I was offered a job today as a gameplay programmer for Black Lantern Studios working on an unannounced Wii game! The madness of it all!

The long story:
For the past three years I have been working as a research associate at the Toxicore Laboratory in Kansas City. The work has been interesting and very good for me. I was lucky enough to attend several national conferences to present my work, as well as get a few publications in mainstream science journals.

During this time, I came to gamedev.net and my programming really took off. I had long attempted to program games, but lacked sufficient knowledge. That changed very rapidly once the resources of gamedev.net came to my aid. So, I started actually making and finishing real, albeit short, games. My interest in programming was renewed and I went back to college for two semesters to finish my B.A. in computer science. Since then, I have continued working at the lab and making games in my free time. The latest fruits of my labor, Fireheart and Gearo, really show the progress that I had made the past few years in game development.

In January of this year, I found out that our grant extension was denied and our work would come to an end this May. Although saddened that I would be leaving the lab that had treated me so well for three years, it seemed the perfect opportunity to switch back into programming and more specifically software engineering. Since February, I have been sending out my resume to several software companies in and around Kansas City. Although there were some opportunities that came about, none of the positions were really a good fit for me or my skills. About 5 weeks ago I started to worry a bit that I wouldn't be able to find the 'right' job. A wee bit of despair set in. I knew I could always stay in chemistry, but I really felt this was my opportunity to get into SE.

Shortly after that, I happened to visit one of my old professors at the University and showed him my latest builds of Gearo, while talking to him about the difficulty of breaking into SE. He asked me how many game development companies I had applied to. Hmm. None. I never really considered it. After a bit of discussions it did seem like the right thing to do, and it is hard for me to describe why I had not done so up to that point. But later that night, I sent out my resume and game dev portfolio to a few game development studios here in the Midwest.

One week later I was taking programming tests out the wazoo. As slow as a start as I had with my SE applications, game dev interviews and tests came raining in. So I took them (some well and some not so well) and did a few interviews. I found a very small dev studio in Springfield, near my hometown, and applied in the off chance that they might have something available. They did.

For the next two weeks, there were interviews, tests, and finally, the glorious moment this morning when I found out that I had got the job. Wow. After so many years of wanting to make games, then finally getting a taste for it, I have now been given the opportunity to do it at a much bigger level. That makes me happy.

I wish there were more of you crazy gamedev.netters in the KC area 'cause drinks are on me for the next few days!

Anyways, what I wanted to say was thanks for everyone here that ever helped me, read my journal, or gave me advice. It is this wonderful community that really deserves the congratulations of getting a chemist-turned-hobby-developer into an actual professional game developer position. Cheers to all of you!

And for those who are curious, I'll be posting about Gearo quite soon. Lots of progress and fun things to show!

## Whats that!? An editor!!

Despite my complete lack of desire to write a level editor for Gearo, it turns out that trying to script nice levels by hand is far worse.

So, I got up early this morning (as in, before noon) and went for it. It's lacking some crucial features, but for version 0.1 I'm satisfied.

I have for you not one video, but 3! Yes, 3 videos showing off some things! The first one shows some very basic things in the editor. Loading a map, changing the raw format, etc. The second video shows the placement of actors, and object picking (although it isn't very good). And finally, the third video shows off the world map with some better art, and the beach scene made in the editor in action =)

Video 1: Basic editor functionality.

Video 2: Adding actors to the scene.

Video 3: The added actors coming after Gearo. How do you like your crab?

As always you'll need the XVid codec. Hope it's entertaining =)

## More Gearo Progress

Unfortunately I didn't get much sleep last night, but in exchange I made a lot of progress with Gearo.

The game really consists of 4 systems. There is the front end (options/loading/creating characters), the World Map, the Combat, and the Village/location system.

Up to this point I had a good chunk of the front end finished, and have been making progress on the combat. Last night I tidied up the collision, made the enemies a 'tad' bit more intelligent, put in a mock hud, and got some basic attacking based on proximity/attack rates in.

The really exciting part though, is that I also got a really decent part of the World Map in. Basically, you travel the country side trying to engage the enemy at various points as well as liberating towns. The World Map is the representation that is similar to a Final Fantasy overworld. This is also where we hope to introduce some non-linear gameplay, allowing multiple paths and locations to visit, all at the player's discretion.

So here's video number 3. It shows off the world map (yes, my programmer art sucks) and then goes into the "combat". When the player attacks he flashes blue and when the shades attack they flash red. Super simple atm.

Three system video:

(xvid codec required)

So a brief break down:
Front End System: 80% complete
World Map System: 50% complete
Combat: 15% complete
Town/Location: 0% complete

Didn't work on Fireheart yesterday, but plan on putting some attention there later tonight.

=)

## Gearo Prototype Video 2

After putting off the collision for Gearo for over a week (which is almost 1/6th of my target development time) I decided to do it today. There was a little trickiness involved, but for the most part, my emulated 3D world is unable to resist my iron hammer of code.

So, I threw together another video. Again, less than 1 MB and you'll need the XVid codec (see below). The enemies aren't exactly smart, and they turn red when collisions occur -- the only practical debugging method I could think of.

Collision Video:

In other news, it seems to be incredibly tricky for me to get out of the chemistry business and into software development. I really thought three years of professional research experience in a laboratory and a CS degree would get me in somewhere. Apparently not =/

Next on the list for Gearo: Animations and interactions!
Next on the list for Fireheart: The tech tree!

## Gearo Prototype Video

So spring has finally re-emerged here, ahhh.

Fireheart: Added some additional collision types to the old "box v box" collision. Now we have box/circle/line collisions, which has helped make the levels feel a bit more organic. Specifically, now we can have proper collision for diagonal edges and the such.

Gearo: Finished the basic ground layering system, adding in scriptable actors (no animation yet though), and spawn points. Below is a very brief video (< 1MB) showing off the prototype as we have it. No collision/animation/interaction really, but it is proof of concept. Comments appreciated.

Simple Movement Video:

You will need the XVid codec to see the action (or lack thereof).

Much more to come in the coming days...

## Out of the depths of time, crawls shadowcomplex!

Hey everyone, sorry for the delay in updating. Ran into some technical issues with my account here (thanks very much to Rav,Melissa, and Oluseyi for the help) and then decided to post more content then usual for my 'return' =)

So -- Fireheart is rolling. The dialogue is coming along very well, and is now quite robust. I have added in dialogue branching, and choice selection, so shops and inns and the such should be a snap now, and should be completely scriptable.

One stumbling block thus far: the game mechanics of the combat were not fleshed out enough in design. We have a fairly rich ability to convey a story, and already have some decent puzzle elements, but the combat is...lacking. Basically, you can run around, shoot fireballs, things chase you/shoot fireballs back, and that's that. Not so much fun, really.

So before David and I can get together for lengthy teleconference on what to do, we have been focusing on content, in the forms of level building.

This is a pic from within the world builder of a dungeon type level. There are some tile inconsitencies, but we are just trying to flesh out the feel. It leaves a bit to be desired at the moment, but I think the blue fog looks pretty cool.

Other news:
Since David and I both [seemingly] work better when we have multiple things going on, we decided to mock up a prototype for one of his IP ideas, known as 'Gearo the Hero'. We are trying to knock out a short, sweet, simple and addictive game in just a few weeks. It is kind of 'our break' from Fireheart once we start to feel the burn.

A short description: take Space Invaders, put it into 3D with a fantasy setting that allows melee and ranged attacks, and you have Gearo: Legion's Call.

Here is the very first screenshot:

It is kind of hard to tell what is going on, but next post will have a video so you can see the 3D perspective. In motion it looks pretty neat.

Along with this little game, David really likes to make comics, so he is going to do a short daily comic strip about the Gearo universe. Did I mention how dedicated and talented he was?

Gearo Comic teaser:

We are currently working on a new site together, for both Fireheart and Gearo. Once up (well, once polished a bit) there will be daily comic updates.

So, thats the past month. Thanks for reading =)

EDIT: Sorry about all the broken images below :( My old site is no more since David and I are making a new one together, and I have yet to re-upload the images again. I'll try and do that soonish.

## Dialogue Revisited

Since Fireheart is largely designed to be a story driven game, there will be lots of dialogue. Although we weren't 100% satisfied with the first iteration of the dialogue, we let it be to work on other things. This last week I finally got around to playing with it some more, and the result is below. I think this is better, but still not perfect. I added shadowing to the text, fixed the multi-line spacing issue, and switched out the text box (this one is low res for the moment). Any critiques are much appreciated.

[Shadows for the characters are uncorrected in this shot]

The gameplay video last post brought up some interesting questions about the main characters 'floating' appearance. After thinking about it for a while, I think I know why it seems this way (for all characters the more I look at the game). Each character is updated 60 times per second and movement is based against the deltatime(ms)/16ms (60 fps). However, the animation timers for each character are often much slower than 60 fps. Some are as slow as 10 fps. This leads me to wonder -- is updating the position (movement) faster than updating the animation causing the 'floating' appearance? Unfortunately it seems like quite the task to couple these things this far into the development, but I am always looking for a challenge :)

In other completely unrelated news, I have watched the trailer for
"> Odin Sphere a thousand times. The animation really interests me. And although my next project is probably at least 3 months down the road, I would like to try and create a 2D engine that uses this type of animation. Gets me excited.

But back to work on Fireheart in the meantime.

## Short Gameplay Video

The latest things implemented in Fireheart:
Particles
Spawners
Primitive Traps

All in all, these three things actually add a decent amount of gameplay in. In response to DecipherOne's question last post about the gameplay: We are going for an action/adventure kind of theme with heavy puzzle elements. Our goal it to make it where the player can brute force through every level or avoid combat completely through clever planning. The game pace is probably most similar to Zelda: A Link to the Past.

I put a video together showing the Imp character defeating a couple of varas as well as some of the early trap devices. I used a bit too much compression though and the video is kinda blurry, so I'll be making a new one and replacing the link sometime later today.

VIDEO REMOVED (sorry, switching hosts)

Also, you will need the XVid Codec to view the video. This can be found here.

## More Entities, TTF, and Mobile 5.0

Added three new entity types in Fireheart: the big shade, the vara (reptile like demon), and the girl, Trudy, who is the second PC. The gameplay will switch back and forth between the Imp and Trudy as the story progresses. With both into the game now, I can start on their individual mechanics.

Also got support for TTF in. It looks so much nicer than the old bitmap font, and was actually very easy to implement (thanks to pre-existing support in PTK).

Hopefully this weekend will see the characters both have basic mechanics (other than pushing things) in. The Imp gets 'Firebrand' and 'Firefoot' skills, while Trudy will start with a real world Taser, but eventually learn summoning skills. Should liven up the current 'pushing rocks' gameplay.

This screen shows all five of the current entities (Imp,Trudy,Big/Little Shades, and Vara). The shadows are off a bit for the new entities, and I believe I am going to have to make a shadow offset parameter to correct this.

The TTF in action as well. The multi-line part has been a pain for me, but it is almost finished. Here you can see that there are some spacing issues present.

EDIT: Couldn't get the .png to upload properly. So here is a .jpg --- noticeable difference in quality as compared to the one above, oh well.

I also decided to try and learn some mobile programming stuff. Not knowing where to start, I downloaded the Mobile 5.0 SDK and started messing around. I don't know much C# but I started there, because the graphical interface of designing forms was such a snap. The provided emulator is also pretty nifty, albeit slow. I don't have much to show yet, but I am thinking of doing a small tic-tac-toe game in C# to get into the Mobile API a little deeper.

That's that for now.

EDIT 2: The offer for the free sprites is still on the table. See last entry for more info.

## Screenshots

Lately a lot of good things have been going on with the newly named 'Fireheart' project. I pretty much have PTK bending to my will now, so the development is coming pretty fast.

Collision, NPC interaction, and a scripted event/object system have all been implemented. The latest new feature, is shadows on dynamic entities (static entities just have pre-rendered shadows). Although not perfect, these early shadows help heighten the mood a lot for the game.

David, the artist, has also been getting a lot of things done. The first whole Tileset is almost complete and we have numerous static objects, as well as sprites for the main character (in Imp form) and a few NPCs.

Anyways, here are some screens:

Some dialogue:

A big tree and some brick walls:

Also, I have a slew of upcoming paid projects (which is good), that are really hampering the chances of me finishing Warmage: Exodus, or getting it into a releasable state for a general demo. That said, I don't want the graphics to go to waste. I paid a lot for them, but I would much rather see them being used in someone else's project, then sitting on my harddrive. So if you have a 2D game that needs some sprites (yeah, they are kind of specific, but I think they could adapt to a lot of purposes), and good progress already or a proven ability to get games done, I would be willing to give these to the right person.

For reference here is a little image I put together showing off some of the sprites I have. The main character has over 800 frames total, in 8 directions with around 10 animations. The reptile and insects have 300-400 frames, plus I have GUI/HUD images, and some basic terrain pieces. Just drop me a note here if you are interested.

## Another project

Unfortunately, development of Warmage: Exodus is kind of grinded to a halt. Due to the holidays I am broke and can't afford to contract out any more artwork for the time being. At the current stage, I really need some finalized spell effects to get the spell system finished. Since this isn't likely to happen for a while I wrapped up the save/load system and finished some more basic AI scripting.

Anyways, a screenshot of the current spell system in action. I am not currently pleased with the look right now, but at least its functional. A few things need tweaked but I can frag skirks now.

Infernal projectile spell in action:

Aside from continued development on W:E, I stumbled across a very talented artist trying to break into the casual/semi-casual game scene. Finally finding an artist willing to partner, I jumped on the deal and we are now developing a semi-casual quest/adventure type game. Think "A Link to the Past" with less combat oriented gameplay and more puzzles.

Anyways, I opted to use PTK for the game and so far that has been a good choice. I started development this past Saturday and have so far implemented a decent tilemap editor with foreground and background parallax layers and a nifty zoom function. This was my first attempt at parallax scrolling but I think it turned out alright.

Map editor screenshot at 100% Zoom

Map editor (roughly same location) at 50% Zoom

And finally, a nice choppy, low-res video showing off a bit of the parallax and the zoom.
The Video

Thats all for now, happy holidays.


text:
I have read multiple posts on how to reset the sparkfun pro-micro when it gets stuck during upload, and this seems to work to get it back to a state where I can upload new code again - However, I am here to ask if it is possible that it is something in my code that is causing this issue? The reason I suspect it is my code is because I have tried:

• Different pro micro
• Different USB cable
• Tried reverting back to an older AVR boards package as suggested in a different post

Not sure if this is a coincidence, but when I upload a simple blink sketch I don't have any trouble, but as soon as I upload my code (below), it gets stuck on uploading... I can get it to eventually upload after many attempts using the reset during upload trick, but it seems to be unstable. I say unstable because sometimes it will print out the values requested, and other times it will print nothing...

int clampVal = 0;

void setup() {
Serial.begin(115200);
}

{
const int numRead = 400; //amount of calibration values we will average
double total2 = 0;                  // the running total
int calibration2 = 0;               // calibration incrementer

}
{
}
calibration2++;
}

}

void loop() {
Serial.println(clampVal);
}

EDIT: Once I reset and upload an EMPTY sketch, I can upload the empty sketch with no problems. I did it 5 times in a row with no issues. Then tried to upload the code above once, and it worked..but then tried to upload second time, and stuck in uploading again... it has to be the code, but I can't narrow down what it is.

Uno's Mega's and so on have a separate MCU (u3) that contains the boot loader and is responsible for the USB connection and for driving the virtual serial port. Micros ( and also Leonardos and Esploras ) have built in USB support in the main MCU (u4). So if your program does something that breaks the USB part of the MCU the communication breaks also. This happens for instance if you disable the interrupts.

The only thing you use in your program that might cause a problem is the Serial connection. The blink example has no serial output.

If you add a Serial.begin(115200) and a Serial.println("Hello") to the blink example, I guess the problem occurs also.

The IDE establishes the programming connection by connection to the selected com port at 1200 Baud. The boot loader recognizes that, performs an auto reset and opens a second (programming port) from then the IDE has access to this port and uses it to communicate with the boot loader. On a UNO this is handled by the separate MCU and on the Micro the main CPU is responsible for that.

Perhaps it helps if you add a time delay, before the Serial.begin(). Then you will have more time to start the programmer.

There is also a trick to enlarge the time you can start the programming after a reset to 8 seconds. https://forum.arduino.cc/index.php?topic=224416.msg1643210#msg1643210

Your code is unnecessarily complicated. If you want, you can try the program below. I think it does the same as yours. I have no compiler and no micro at the moment so it's complete untested.

You used a calibration variable. I guessed that it is for skip the first calibration values. If you need the values you can store them in a separate array.

My prog. has a lower memory footprint because I store the integer values from the analog input into an integer array. You used a double array.

You also did a lot of unnecessary computations after you read an analog value. This can slow down the readings. Perhaps therefore you missed some values you expected to see.

//amount of calibration values we will average
const int valueCount = 400;
const int calibCount =   0;

void setup()
{
Serial.begin(115200);
}

void loop()
{
int vals[ valueCount ];

for (int idx = 0; idx < valueCount + calibCount; idx++)
{
int rawValue = analogRead( A0 );
if ( idx >= calibCount )
{
vals[ idx - calibCount ] = rawValue;
}
}

double total = (double) 0.0;

for (int idx = 0; idx < valueCount; idx++)
{
total += (double) vals[ idx ];
}

Serial.println( total / valueCount );
}

• Thanks @peter Paul Kiefer for the very thorough explanation! When I get back in front of my micro later I will try your suggestions and code, fingers crossed it works! – MattG Nov 27 '19 at 20:15
• That seems to have done the trick. I put in a delay of 500ms between serial prints and now it uploads repeatably. Thanks for the help! – MattG Nov 27 '19 at 23:49

format: plain


text:
# Convergence\Divergence of $\sum\limits_{n=1}^{\infty}\frac {1\cdot 3\cdots (2n-1)} {2\cdot 4\cdots (2n)}$

Prove convergence\divergence of the series: $$\sum_{n=1}^{\infty}\dfrac {1\cdot 3\cdots (2n-1)} {2\cdot 4\cdots (2n)}$$

Here is what I have at the moment:

Method I

My first way uses a result that is related to Wallis product that we'll denote by $W_{n}$. Also,
we may denote $\dfrac {1\cdot 3\cdots (2n-1)} {2\cdot 4\cdots (2n)}$ by $P_{n}$. Having noted these and taking a large value of $n$
we get: $$(P_{n})^2 =\frac{1}{W_{n} \cdot (2n+1)}\approx\frac{2}{\pi}\cdot \frac{1}{2n+1}$$ $$P_{n}\approx \sqrt {\frac{2}{\pi}} \cdot \frac{1}{\sqrt{2n+1}}$$

Further we have that: $$\lim_{n\to\infty}\sqrt {\frac{2}{\pi}} \cdot \frac{n}{\sqrt{2n+1}} \le \sum_{n=1}^{\infty} P_{n}$$ that obviously shows us that the series diverges.

Method II

The second way is to resort to the powerful Kummer's Test and firstly proceed with the ratio test: $$\lim_{n\to\infty} \frac{P_{n+1}}{P_{n}}=\frac{2n+1}{2n+2}=1$$ and according to the result, the ratio test is inconclusive.

Now, we apply Kummer's test and get: $$\lim_{n\to\infty} \frac{P_{n}}{P_{n+1}}n-(n+1)=\lim_{n\to\infty} -\frac{n+1}{2n+1}=-\frac{1}{2} \le 0$$ Since $$\sum_{n=1}^{\infty} \frac{1}{n} \longrightarrow \infty$$ our series diverges and we're done.

On the site I've also found a related question with answers that can be applied for my question. Since I've already have some answers for my question you may regard it as a recreational one and if you have a nice proof to share I'd be glad to receive it. I like this question very much and want to make up a collection with nice proofs for it. Thanks.

-
Aryabhata's estimate $\dfrac {1\cdot 3\cdots (2n-1)} {2\cdot 4\cdots (2n)} \ge \frac{1}{\sqrt{4n}}$ gives the answer by the $p$-test (as in my answer below). –  robjohn Aug 17 '12 at 21:43
You can also use Raabe's test, $lim_{n \to \infty} n\left(\frac{a_n}{a_{n+1}}-1\right)$ if your result $P>1$ then the series is convergent, $P<1$ the series is divergent, and if $P=1$ then the test is inconclusive. In solving the limit, you are almost assuredly going to have to use L'Hospital rule mathworld.wolfram.com/RaabesTest.html –  Joseph Skelton Aug 18 '12 at 0:59
@robjohn: when I firstly saw that inequality I wondered where it came from. I don't remember exactly, but it's possible that I met it before, maybe in my first year in high school when studying the induction chapter. This inequality form is really nice. –  Chris's sis the artist Aug 18 '12 at 7:21
@Joseph Skelton: yeah, Raabe's test is also useful here. –  Chris's sis the artist Aug 18 '12 at 7:27
It seems that Gauss test may also work nice. –  Chris's sis the artist Aug 18 '12 at 8:01

Since $$\frac{1 \cdot 3 \cdot 5 \cdot \ldots \cdot (2n-1)}{2 \cdot 4 \cdot \ldots \cdot (2n)} \ge \frac{1 \cdot 2 \cdot 4 \cdot \ldots \cdot (2n-2)}{2 \cdot 4 \cdot \ldots \cdot (2n)} = \frac1{2n}$$ the series diverges by comparison to the Harmonic series.

-
really awesome! (+1) –  Chris's sis the artist Aug 17 '12 at 21:23
You beat me! Good job. –  Byron Schmuland Aug 17 '12 at 21:24
@Morgan Sherman: it's nice to see that such a small trick brings you to the result so fast. :-) –  Chris's sis the artist Aug 17 '12 at 21:31
The estimate is simple and loose, but it gets the job done (+1). –  robjohn Aug 17 '12 at 21:45
+1 Painfully simple and elegant. –  DonAntonio Aug 17 '12 at 23:27

$$\frac{1\cdot3\cdot5\cdots(2n-1)}{2\cdot4\cdot6\cdots(2n)}=\frac{(2n)!}{2^{2n}n!^2}\tag{1}$$ Using Stirling's Formula, we get that $$\frac{(2n)!}{2^{2n}n!^2}\sim\frac1{\sqrt{\pi n}}\tag{2}$$ By the $p$-test, $$\sum_{n=1}^\infty \frac1{n^p}\tag{3}$$ diverges for $p\le1$, $$\sum_{n=1}^\infty\frac{1\cdot3\cdot5\cdots(2n-1)}{2\cdot4\cdot6\cdots(2n)}\tag{4}$$ diverges.

Derivation of (1):

\begin{align} \frac{1\cdot3\cdot5\cdots(2n-1)}{2\cdot4\cdot6\cdots(2n)} &=\frac{1\cdot\color{#C00000}{2}\cdot3\cdot\color{#C00000}{4}\cdot5\cdot\color{#C00000}{6}\cdots(2n-1)\cdot\color{#C00000}{(2n)}}{2\cdot4\cdot6\cdots(2n)\color{#C00000}{2\cdot4\cdot6\cdots(2n)}}\\ &=\frac{(2n)!}{(2^nn!)^2} \end{align}

-
nice! (+1) Thank you. –  Chris's sis the artist Aug 17 '12 at 21:38
I'm confused, how do you get (1)? –  Joseph Skelton Aug 18 '12 at 0:53
\eqalign{ \frac{{\left( {2n - 1} \right)!!}}{{\left( {2n} \right)!!}} = \frac{{\left( {2n} \right)!!\left( {2n - 1} \right)!!}}{{\left( {2n} \right)!!\left( {2n} \right)!!}} &\cr = \frac{{\left( {2n} \right)!}}{{\left( {{2^n}n!} \right)\left( {{2^n}n!} \right)}} &\cr = \frac{{\left( {2n} \right)!}}{{{4^n}n{!^2}}} &\cr} –  Pedro Tamaroff Aug 18 '12 at 1:48
ah, ok. That makes much more sense now. I was unaware there was even a name for that product. Thanks! –  Joseph Skelton Aug 18 '12 at 2:30
@PeterTamaroff: Thanks for that. I have just added a derivation to the answer. –  robjohn Aug 18 '12 at 7:32

As robjohn notes, $$\frac{1\cdot3\cdot5\cdots(2n-1)}{2\cdot4\cdot6\cdots(2n)}=\frac{(2n)!}{2^{2n}n!^2} = \frac 1{4^n} \binom{2n}{n}$$ Noting that $$(2n+1) \binom{2n}{n} > \sum_{i=0}^{2n} \binom{2n}{i} = 4^n$$ As $\binom{2n}{n}$ is the largest binomial coefficient.

Therefore, $$\frac 1{4^n} \binom{2n}{n} > \frac{1}{2n+1},$$ and hence the series diverges, by the comparison test.

-
you mean $4^n$ on the 4th row, right? –  Chris's sis the artist Aug 18 '12 at 8:18
Yeah, edited. Thanks. –  Rijul Saini Aug 18 '12 at 8:23
OK. Thank you for your nice solution! (+1) –  Chris's sis the artist Aug 18 '12 at 8:23


text:
# Hotelling's T^2 in Julia, Python, and R

The t-test is a common, reliable way to check for differences between two samples. When dealing with multivariate data, one can simply run t-tests on each variable and see if there are differences. This could lead to scenarios where individual t-tests suggest that there is no difference, although looking at all variables jointly will show a difference. When a multivariate test is preferred, the obvious choice is the Hotelling’s $$T^2$$ test.

Hotelling’s test has the same overall flexibility that the t-test does, in that it can also work on paired data, or even a single dataset, though this example will only cover the two-sample case.

### Background

Without delving too far into the math – Wikipedia has a more thorough look at it – if we have two samples $$X$$ and $$Y$$ pulled from the same normal distribution, then the test statistic will be

$$t^2 = \frac{n_x n_y}{n_x+n_y} (\bar{X} - \bar{Y})^T \Sigma^{-1} (\bar{X} - \bar{Y})$$

where $$n_x$$ is the number of samples in $$X$$ (same for $$n_Y$$), $$\bar{X}$$ is the vector of the column averages in $$X$$ (same for $$\bar{Y}$$), and $$\Sigma$$ is the pooled covariance matrix. This follows a $$T^2$$ distribution, which isn’t among the distributions typically found in statistical software. But it turns out that this can be made to follow an F-distribution by multiplying by the right factor:

$$\frac{n_x + n_y - p - 1}{p(n_x + n_y - 2)} t^2 \sim F(p, n_x+n_y-p-1)$$

where $$p$$ is the number of variables in the data. The F-distribution is much more commonplace, so this should be much easier to deal with.

Since computing the statistic and p-value requires nothing beyond some linear algebra and probability distributions, it’s not too difficult to implement. Thorough implementations of Hotelling’s $$T^2$$ aren’t hard to find, though from what I’ve seen it’s usually in a package that’s not standard or common – Python seems to lack one in its major statistics libraries while Julia and R have them as parts of specific libraries (HypothesisTests and ICSNP respectively). But since these aren’t too difficult to code, this post will code the two-sample test manually in all three languages. I checked my results against the ICSNP library’s test to ensure that things were working correctly.

### The Data

For data, we’ll use the sepal measurements in the iris dataset. Looking at the data, there are definite differences between the classes, and while there is an extension of Hotelling’s test that can handle more than two samples, we’ll just use the Versicolor and Virginica species. From the plot below, there does appear to be some difference, and univariate t-tests on each variable strongly suggest that significant differences exist.

The reason for only using the sepal measurements and those two species is because some other combinations were producing p-values small enough that Julia rendered them as zero, especially when all four variables were used. So I picked something that produced a p-value that all three languages could properly display.

### R Implementation

R probably has the most straightforward implementation, in that all of the tools needed to write this are actually imported upon starting up, so no external dependencies exist. I am using the glue library, but that’s just for formatting the output of print(), so it’s not necessary for computing results.

library(glue)

TwoSampleT2Test <- function(X, Y){
nx <- nrow(X)
ny <- nrow(Y)
delta <- colMeans(X) - colMeans(Y)
p <- ncol(X)
Sx <- cov(X)
Sy <- cov(Y)
S_pooled <- ((nx-1)*Sx + (ny-1)*Sy)/(nx+ny-2)

t_squared <- (nx*ny)/(nx+ny) * t(delta) %*% solve(S_pooled) %*% (delta)
statistic <- t_squared * (nx+ny-p-1)/(p*(nx+ny-2))

p_value <- pf(statistic, p, nx+ny-p-1, lower.tail=FALSE)
print(glue("Test statistic: {statistic}
Degrees of freedom: {p} and {nx+ny-p-1}
p-value: {p_value}"))

return(list(TestStatistic=statistic, p_value=p_value))
}

data(iris)
versicolor <- iris[iris$Species == "versicolor", 1:2] virginica <- iris[iris$Species == "virginica", 1:2]
TwoSampleT2Test(versicolor, virginica)
## Test statistic: 15.8266009919182
## Degrees of freedom: 2 and 97
## p-value: 1.12597832539986e-06

### Julia Implementation

Julia is a little bit trickier. It might be because I haven’t gone too deep into it, but Julia seems a little less casual about type conversions than R, so there is a need to mindful of those. In particular, the matrix multiplication step goes smoothly but returns a 1-by-1 array instead of a single numeric value like R does, so the statistic needs to be extracted from the array. There are also a few packages that need to be installed and imported, though these aren’t very unusual ones.

using Distributions
using RDatasets
using Statistics

function TwoSampleT2Test(X,Y)
nx, p = size(X)
ny, _ = size(Y)
δ = mean(X, dims=1) - mean(Y, dims=1)
Sx = cov(X)
Sy = cov(Y)
S_pooled = ((nx-1)*Sx + (ny-1)*Sy)/(nx+ny-2)

t_squared = (nx*ny)/(nx+ny) * δ * inv(S_pooled) * transpose(δ)
statistic = t_squared[1,1] * (nx+ny-p-1)/(p*(nx+ny-2))

F = FDist(p, nx+ny-p-1)
p_value = 1 - cdf(F, statistic)
println("Test statistic: $(statistic)\nDegrees of freedom:$(p) and $(nx+ny-p-1)\np-value:$(p_value)")
return([statistic, p_value])
end

iris = dataset("datasets", "iris")
versicolor = convert(Matrix, iris[iris.Species .== "versicolor", 1:2])
virginica = convert(Matrix, iris[iris.Species .== "virginica", 1:2])
TwoSampleT2Test(versicolor, virginica)
## Test statistic: 15.826600991918198
## Degrees of freedom: 2 and 97
## p-value: 1.1259783254669031e-6

The results appear to be the same, although there is a very slight difference in the p-values, on the order of $$10^{-16}$$ or so. I don’t know whether that’s an implementation detail or something else. The way Julia handles its arrays is a little different as well, since we’re taking the transpose of δ in the right-side multiplication instead of the left side.

Also, if you’re not familiar with Julia, the use of the Unicode character for the Greek letter delta (δ) might be surprising. Julia actually can use Unicode characters for variable names, which is pretty neat (though not generally advisable, I think).

### Python Implementation

This one is probably the most convoluted of the three, though even it isn’t that bad. We again require a couple of fairly common packages. There are two major differences in the Python code compared to the previous languages:

1. The dataset isn’t loaded as a dataframe, but instead as an object of type sklearn.utils.Bunch, with properties that contain the variables and the target class.
2. Matrix operations aren’t quite as native to Python, so we lack an operator for performing it and have to use np.matmul() twice as a result.
import numpy as np
from sklearn import datasets
from scipy.stats import f

def TwoSampleT2Test(X, Y):
nx, p = X.shape
ny, _ = Y.shape
delta = np.mean(X, axis=0) - np.mean(Y, axis=0)
Sx = np.cov(X, rowvar=False)
Sy = np.cov(Y, rowvar=False)
S_pooled = ((nx-1)*Sx + (ny-1)*Sy)/(nx+ny-2)

t_squared = (nx*ny)/(nx+ny) * np.matmul(np.matmul(delta.transpose(), np.linalg.inv(S_pooled)), delta)
statistic = t_squared * (nx+ny-p-1)/(p*(nx+ny-2))
F = f(p, nx+ny-p-1)
p_value = 1 - F.cdf(statistic)
print(f"Test statistic: {statistic}\nDegrees of freedom: {p} and {nx+ny-p-1}\np-value: {p_value}")
return statistic, p_value

## p-value: 1.1259783253558808e-06
So writing a Hotelling’s $$T^2$$ test yourself isn’t too hard. These functions could be generalized to handle one-sample, paired, and other variants as well if desired; this should prove to be a good start if so.


text:
# Group theory and quantum optics

This is a question about application of group theory to physics.

The starting point is the group $SU(n)$. I have a representation $R$ of $SU(n)$ that takes values on the unitary group on an infinite dimensional separable Hilbert space $H$. This representation can be written as the direct sum of finite-dimensional irreducible representations. Let me write $R(g) = \oplus_j R_j(g)$ for $g \in SU(n)$. The space $H_j$ of each irreducible representation is finite-dimensional. I denote as $P_j$ the projector on $H_j$. For those who are familiar with the subject, what I have in mind is the representation of $SU(n)$ obtained when applying to a set of $n$ bosonic modes the canonical transformations that are linear and preserve the photon-number operator. In this setting, the subspaces $H_j$ are the subspaces with $j$ photons, with $j=0,1,..,\infty$.

My question is the following:

From the representation $R$ given above we can define another representation: $R \otimes R \, : \, g \to R(g) \otimes R(g)$. What is the commutant (also known as centralizer) of the representation $R \otimes R$?

It is easy to see that the commutant of the representation $R$ is given by the projectors $P_j$'s. It is also easy to check that the following operators belong to the commutant of $R \otimes R$:

• $P_i \otimes P_j$, for $i,j=0,1,...,\infty$

• $S_{jj}$

where $S_{jj}$ is the "swap" operator in the subspace $H_j \otimes H_j$. I wonder if there are other operators in the commutant. How can I check it?

Thanks a lot and please accept my apologies if my notation is not very clear.

• Worth noting that apparently "commutant" is another word for "centralizer," for those who were confused like me. Maybe this is a regional thing?
– user10851
Jan 27 '15 at 0:35

There are necessarily further operators: a von Neumann algebra of operators if, as I am assuming, your representations are made of unitary operators.

All those operators can be constructed out of the orthogonal projectors commuting with the representation as complex linear combinations of them, since a complex von Neumann algebra is the closure of the complex span of its orthogonal projectors and here the closure is not necessary since the dimension is finite.

As a matter of fact you therefore should look for the invariant subspaces of each subrepresentation $R_i \otimes R_j$ in the corresponding product space $\cal{H}_i \otimes {\cal H}_j$ and the span of the orthogonal projectors onto these subspaces gives rise to the full space of operators commuting with $R_i \otimes R_j$. In particular, reversing the procedure, with $S_{jj}$ you can construct the subspace of symmetric and the subspace of antisymmetric tensors in ${\cal H}_j \otimes {\cal H}_j$, the projectors are $(I+S_{jj})/2$ and $(I-S_{jj})/2$, all complex combinations of these operators commute with the representation.

The fact that there are however many subspaces is already evident if looking at the case of $SU(2)$. In this case there is a canonical decomposition of $R_i\otimes R_j$ and $\cal{H}_i \otimes {\cal H}_j$ into orthogonal irreducible representations and the complex span of the corresponding projectors define operators in the commutant of $R_i\otimes R_j$ which actually exhaust this commutant (see below).

The said decomposition of $R_i\otimes R_j$ is nothing but the standard Clebsh-Gordan decomposition. In that case the procedure is relatively easy since the irreducible representations of $SU(2)$ are completely fixed by the eigenvalue of the unique Casimir operator $J^2$ and the overall argument reduces to look for the single eigenvalues of $J^2$ admitted for a product $R^{(j)}\otimes R^{(j')}$ of a pair of irreducible representations of $SU(2)$. Each eigenvalue defines an invariant subspace and the complex linear combinations of the corresponding orthogonal projectors are in the commutant of the representation in ${\cal H}^{(j)}\otimes {\cal H}^{(j)'}$.

Here you find the analogous decomposition for $SU(3)$, for $n>3$... I do not know, sorry :). You could try to have a look at Barut-Raczka's book on representations of groups.

An interesting fact is the following.

If the irreducible representations of a compact group are exactly all common eigenspaces of (mutually commuting) Casimir operators and each set of eigenvalues appears at most once, then the operators which commute with a tensor product of two irreducible representations $R_i \otimes R_j$ (a) are mutually commuting and (b) they are exactly the complex combinations of the orthogonal projectors onto the said common eigenspaces.

In fact: the space $\cal{H}_i \otimes {\cal H}_j$ is direct sum of mutually orthogonal irreducible representations by Peter-Weyl theorem which are eigenspaces of the Casimirs. If an operator $A$ commutes with the product representation $R_i \otimes R_j$ it also commute with its Casimir operators and thus it leaves invariant their common eigenspaces, i.e., the spaces of the irreducible representations that decompose $\cal{H}_i \otimes {\cal H}_j= \sum_k {\cal H}^{(i,j)}_k$. Since every such subspace ${\cal H}^{(i,j)}_k$ is irreducible, Schur's lemma entails that $A$ has the form $a_k I_k$ in every irreducible subspace, where $I_k$ is the identity operator on ${\cal H}^{(i,j)}_k$, and $a_k \in \mathbb C$. In summary the von Neumann algebra of the operators commuting with $R_i\otimes R_j$ is just made of the operators of form $\sum_k a_kI_k$, for some compex numbers $a_k$. This algebra is evidently Abelian.


text:
Let X denotes the sum of the numbers obtained when two fair dice are rolled.
Question:

Let X denotes the sum of the numbers obtained when two fair dice are rolled. Find the variance and standard deviation of X.

Solution:

When two fair dice are rolled, 6 × 6 = 36 observations are obtained.

$P(X=2)=P(1,1)=\frac{1}{36}$

$P(X=3)=P(1,2)+P(2,1)=\frac{2}{36}=\frac{1}{18}$

$P(X=4)=P(1,3)+P(2,2)+P(3,1)=\frac{3}{36}=\frac{1}{12}$

$P(X=5)=P(1,4)+P(2,3)+P(3,2)+P(4,1)=\frac{4}{36}=\frac{1}{9}$

$P(X=6)=P(1,5)+P(2,4)+P(3,3)+P(4,2)+P(5,1)=\frac{5}{36}$

$P(X=7)=P(1,6)+P(2,5)+P(3,4)+P(4,3)+P(5,2)+P(6,1)=\frac{6}{36}=\frac{1}{6}$

$P(X=8)=P(2,6)+P(3,5)+P(4,4)+P(5,3)+P(6,2)=\frac{5}{36}$

$P(X=9)=P(3,6)+P(4,5)+P(5,4)+P(6,3)=\frac{4}{36}=\frac{1}{9}$

$P(X=10)=P(4,6)+P(5,5)+P(6,4)=\frac{3}{36}=\frac{1}{12}$

$P(X=11)=P(5,6)+P(6,5)=\frac{2}{36}=\frac{1}{18}$

$P(X=12)=P(6,6)=\frac{1}{36}$

Therefore, the required probability distribution is as follows.

Then, $\mathrm{E}(\mathrm{X})=\sum \mathrm{X}_{i} \cdot \mathrm{P}\left(\mathrm{X}_{i}\right)$

$=2 \times \frac{1}{36}+3 \times \frac{1}{18}+4 \times \frac{1}{12}+5 \times \frac{1}{9}+6 \times \frac{5}{36}+7 \times \frac{1}{6}$

$+8 \times \frac{5}{36}+9 \times \frac{1}{9}+10 \times \frac{1}{12}+11 \times \frac{1}{18}+12 \times \frac{1}{36}$

$=\frac{1}{18}+\frac{1}{6}+\frac{1}{3}+\frac{5}{9}+\frac{5}{6}+\frac{7}{6}+\frac{10}{9}+1+\frac{5}{6}+\frac{11}{18}+\frac{1}{3}$

$=7$

$\mathrm{E}\left(\mathrm{X}^{2}\right)=\sum \mathrm{X}_{i}^{2} \cdot \mathrm{P}\left(\mathrm{X}_{i}\right)$

$=4 \times \frac{1}{36}+9 \times \frac{1}{18}+16 \times \frac{1}{12}+25 \times \frac{1}{9}+36 \times \frac{5}{36}+49 \times \frac{1}{6}$

$+64 \times \frac{5}{36}+81 \times \frac{1}{9}+100 \times \frac{1}{12}+121 \times \frac{1}{18}+144 \times \frac{1}{36}$

$=\frac{1}{9}+\frac{1}{2}+\frac{4}{3}+\frac{25}{9}+5+\frac{49}{6}+\frac{80}{9}+9+\frac{25}{3}+\frac{121}{18}+4$

$=\frac{987}{18}=\frac{329}{6}=54.833$

Then, $\operatorname{Var}(\mathrm{X})=\mathrm{E}\left(\mathrm{X}^{2}\right)-[\mathrm{E}(\mathrm{X})]^{2}$

$=54.833-(7)^{2}$

$=54.833-49$

$=5.833$

$\therefore$ Standard deviation $=\sqrt{\operatorname{Var}(X)}$

$=\sqrt{5.833}$

$=2.415$


text:
# When a given transformer is run at its rated voltage but reduced frequency, its

224 views
in General
closed
When a given transformer is run at its rated voltage but reduced frequency, its
1. flux density remains unaffected
2. iron losses are reduced
3. core flux density is reduced
4. core flux density is increased

by (54.3k points)
selected

Correct Answer - Option 4 : core flux density is increased

Core flux of Transformer:

RMS voltage of the transformer is given by

V = 4.44fϕ N

Where f =supply frequency

ϕ = core flux = B × A

N = number of turns

B = core flux density

$ϕ \propto {\rm{B}} \propto \frac{{\rm{V}}}{{\rm{f}}}$

Core flux of transformer mainly depends on:

→ Supply voltage

→ Supply frequency

So the core flux of a transformer is strictly constant with load changes

${\rm{B}} \propto \frac{{\rm{V}}}{{\rm{f}}}$

${\rm{B}} \propto \frac{{\rm{1}}}{{\rm{f}}}$

∴ When a given transformer is run at its rated voltage but with reduced frequency, its core flux density is increased.


text:
Chapter 5

Eliciting paresthesia or nerve stimulation are commonly used methods for localizing nerves prior to the injection of local anesthetic. Paresthesia is thought to result from mechanical stimulation of the nerve, resulting in a sensory feeling described as “an electric current” or “shock” in the sensory distribution of the nerve that is being touched. As such, paresthesia can indicate that the needle is in close proximity to the nerve and may be a warning sign of impending mechanical injury, should the needle be further advanced. In contrast, nerve stimulation techniques rely on the use of electric current to elicit motor stimulation of nerves and confirm the proximity of the needle to the nerve.

Electrical nerve stimulation is currently the most common technique for localizing nerves prior to the injection of local anesthetic. Depolarizing the nerve membrane results in contraction of the effector muscles (motor fibers) or in paresthesias (sensory fibers) in the distribution of the nerve. These responses can be used to confirm the proximity of a needle or catheter to the nerve. This localization technique for nerve blocks was first described by von Perthes in 1912; however, it has only gained wider acceptance in regional anesthesia over the last two decades.1 Subsequently, a number of researchers have further improved and developed this technique. Pearson introduced the concept of using an insulated needle for the localization of nerves;2 however, Montgomery and colleagues later demonstrated that ordinary uninsulated needles could also be used to localize nerves, albeit with a higher current.3 The use of a portable transistorized nerve stimulator with a variable current output was first introduced by Greenblatt and Denson.4 Ford and associates further emphasized the important characteristics of electrical nerve stimulators and the differences between insulated and uninsulated needles.5,6 In recent years, the same electrical stimulation principles have been applied for new uses such as percutaneous electrode guidance (PEG),7–10 confirmation of epidural catheter placement,11–13 and peripheral catheter placement for continuous regional anesthesia.14 The clinical relevance of the duration of the stimulating current and optimal placement of the return (skin) electrode have also been determined.15

In order to use nerve stimulation effectively a basic knowledge of the electrophysiologic principles is necessary. The following discussion is based on the commonly accepted theoretical and practical concepts of nerve stimulation. However, our understanding of the mechanisms of nerve stimulation is still incomplete. Thus, the reader should remain cognizant of the fact that current literature still has conflicting concepts and recommendations regarding several aspects of nerve stimulation.16

Favorite Table | Print
Clinical Pearls
 Uncomfortable motor response to nerve stimulation can be avoided by using a low-intensity stimulating current with a short pulse width. However, when a higher current is used, preferential stimulation of the motor nerve may be lost Therefore, the best method to avoid discomfort on nerve stimulation is to limit the energy (E) or current intensity (I) during ...

Sign in to your MyAccess profile while you are actively authenticated on this site via your institution (you will be able to verify this by looking at the top right corner of the screen - if you see your institution's name, you are authenticated). Once logged in to your MyAccess profile, you will be able to access your institution's subscription for 90 days from any location. You must be logged in while authenticated at least once every 90 days to maintain this remote access.

Ok

## Subscription Options

### AccessAnesthesiology Full Site: One-Year Subscription

Connect to the full suite of AccessAnesthesiology content and resources including procedural videos, interactive self-assessment, real-life cases, 20+ textbooks, and more


text:
How do use the discriminant test to determine whether the graph 4xy+5x-10y+1=0 whether the graph is parabola, ellipse, or hyperbola?

Dec 22, 2016

Explanation:

Here is a reference Conic Sections that I will use.

Here is the general Cartesian form of a conic section:

$A {x}^{2} + B x y + C {y}^{2} + D x + E y + F = 0$

The discriminant is: ${B}^{2} - 4 A C$

The discriminant test is the following 3 "If-then" tests; two of which have subordinate special cases:

$\text{[1] }$If ${B}^{2} - 4 A C < 0$, then the equation represents an ellipse.

$\text{[1.1] }$A subordinate special case of this occurs when $A = C \mathmr{and} B = 0$, then the equation represents a circle.

$\text{[2] }$If ${B}^{2} - 4 A C = 0$, then the equation represents a parabola.

$\text{[3] }$If ${B}^{2} - 4 A C > 0$, then the equation represents a hyperbola.

$\text{[3.1] }$A subordinate special case of this occurs, when $A + C = 0$, then the equation represents a rectangular hyperbola.

The given equation is the type specified by [3.1]. A rectangular hyperbola .

Here is the graph of the equation:


text:
# LaTeX to Braille

I would like to make my LaTeX documents as accessible as possible to those that are blind or visually impaired.

The posts that I have linked to below ask questions about alt-tags or tooltips, both of which would be great options. I would like to ask a question along a different tack.

The TUG website http://www.tug.org/tex4ht/ states that tex4ht can convert documents to Braille. I have searched for the commands to do so, but to no avail.

Does anyone know how to convert a LaTeX document (with mathematical content and graphs) to Braille? An OS-independent solution would be ideal.

Related posts:

• For anyone truly interested in this, there is a mailing list called blindmath (nfbnet.org/mailman/listinfo/blindmath_nfbnet.org) with lots of discussion about the merits and demerits of different systems. Oct 25, 2011 at 6:53
• In 1993 was an article about LaTeX for blind students in scientific studies in DTK (TeXnisxche Komödie, magazine of DANTE). The article is online )page 14ff) -- Sorry only German.
– knut
Oct 25, 2011 at 6:59
• My answer does not grasp the complexity of the undertaking. Mathematical notation in Braille is different in different countries. Please see a study by the UNESCO (unesdoc.unesco.org/images/0008/000872/087242eb.pdf) and this blog (chezdom.net/blog/?page_id=51#ref1).
– Andy
Oct 25, 2011 at 12:05
• @knut The link has gone (nicht gefunden werden). Oct 6, 2019 at 11:12
• @Cicada -- The back issues of DTK are now accessible from dante.de/dtk/bisher-erschienen but I didn't find the referenced article in 1993/3. Oct 6, 2019 at 13:47

Maybe the statement on the tex4ht page refers to this Eitan Gurrari's project. Maybe the prototype they used to have is somewhere available, I don't know. Edit: There is some discussion right now.

But you can use plain tex4ht to produce xhtml with mathml, which some screen readers can read. There is some tutorial.

Another option is to produce braille text. You can use xml2brl to translate from xhtml to braille text.

math-pok.tex:

\documentclass{article}

\begin{document}
$(\overline{x+y})=\overline{x}\overline{y}$
\end{document}

compile:

mk4ht mzlatex math-pok.tex "html, mathplayer"
xml2brl math-pok.xht math-pok.brf

math-pok.brf:

("x+y<}) .k "x:"y:

There is also graphical frontend fot xml2brl, called dots, it can display braille output. The brf file can be used to print braille with embosser.

edit If you really want to view braille dots on screen or print them, there are two options. You can install some font with nemeth math support. Other option is using dots, if you select in main menu view -> braille, you can copy dots to your text editor and typeset them using fontspec and some font with support for unicode braille table.

\documentclass{article}
\usepackage{fontspec}
% this font is good for testing, for normall typesseting use
% for example ghUBraille.ttf
\setmainfont{gh_SimBraille_Nemeth_One.ttf}
\begin{document}
% contents of the brf file
("x+y<\}) .k "x:"y:

\fontspec[Script=Braille]{DejaVu Sans}
% and using unicode
⠷⠐⠭⠬⠽⠣⠾⠀⠨⠅⠀⠐⠭⠱⠐⠽⠱
\end{document}

• This looks very promising, thank you :) I was able to re-create your results, but I was hoping for a file math-pok.something that would contain the Braille translation. Have I misunderstood? Oct 25, 2011 at 17:04
• @cmhughes see my updated answer Oct 26, 2011 at 14:16
• This looks very close to what I want. I have to confess that I don't know what to do with the .brf file. Should it be run through some software to produce dots? Nov 2, 2011 at 23:46
• @cmhughes I addes some examples for printing contents of the brf file Nov 3, 2011 at 8:46
• This looks great, thank you very much for your time :) Nov 3, 2011 at 14:45

The first thing to do is the convert the text to Braille. I am using LuaLaTeX (it should work with XeTeX as well). So I found Braille here and did a \setmainfont{Braille} after installing it as a system font. Leaves formulas and graphs.

Then, I came up with the following idea. Physicists tend to read mathematical formulas as the TeX-commands without the need to typeset. In particular, ASCII emails can still be used, even with extensive formulas. So the most straightforward way would be the verbatim environment for the formulas. The verbatim package is very handy since \renewenvironments combined with \start{verbatim} did not work for me without it. Verbatim is typeset in monospaced font, we need a \setmonofont{Braille} as well.

Leaves us with the graphs. I am not sure if this can be done with a pure LaTeX 'conversion'. If you use e.g. jpgs and \includegraphics there is not much LaTeX can do. It might be possible with pdfs to at least replace the axes label and such.

Here is my MWE, I cannot read Braille, I hope the font is good.

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Braille}
\setmonofont{Braille}
\usepackage{lipsum}
\usepackage{verbatim}

\renewenvironment{equation}%
{\endgraf\noindent FORMULA:%
\endgraf\verbatim}%
{\endverbatim}

\begin{document}
\lipsum[1]

$$y = m x +b$$

\lipsum[2]

\end{document}

• I also found dotlessbraille.org/nemeth.htm. Is there a standardized way to typeset formulas in Braille? Then, unicode-math and that font would further improve the output.
– Andy
Oct 25, 2011 at 5:43
• "Physicists tend to read ...". This is debatable. Whilst it is possible for someone used to LaTeX to read the LaTeX code of simple formulae, as it gets more complicated, fewer people will be able to do that. Moreover, if accessibility is to live up to its name, it should include support for visually impaired people who do not know LaTeX (for example, school students), and making them learn LaTeX to read a document is not accessible. Oct 25, 2011 at 6:52
• I agree with you. If someone could point me to a white paper that explains mathematical typesetting for visually impaired people I could have a look at that. The upper link is rather old.
– Andy
Oct 25, 2011 at 7:17
• I'm not an expert, just have a strong interest in this area. You could take a look at the archives of the blindmath mailing list (see comment on original question). There's also the site access2science.com that is trying to be a central repository of information. The person who set that up (John Gardner) is worth contacting. Oct 25, 2011 at 7:21
• THANK YOU @Andy !!! I have a blind student, and eh mentioned that reading the LaTeX source helps a huge lot (his text-to-speech software works fine with my class notes, but formulas get confusing because, for example, eh cannot tell the difference between two consecutive formulas and a division typeset with \frac). I'll try to use your method.
– Jay
Mar 25, 2019 at 18:22

@Andy There are different ways to type out braille equations, especially when both letters and numbers are involved. I am just realizing how complex it is because I am producing tikz graphics with braille labels for a student who is blind. I have to work with a braille specialist to figure out how to do the labels. A font does not translate it into braille well at all, and just keeping the commands would not really be adequate. You have to add certain characters before numbers to indicate that it is a number and not a letter because the first ten letters of the alphabet are the same braille character as the numbers 1,2,3...0. Unless it is a nemeth braille font, in which case the dot config is moved down one spot for the numbers. It is still convention to indicate numbers and letters using certain symbols, and other symbols indicate whether what follows is a greek letter, or capitalized, or subscripted, ... and on and on. It is especially important for labels, where a character hangs out all by itself, to establish where the top and bottom of the braille cell is so the reader can see if it is a letter or number. For the label ab(union sign)c, I would have to type ;ab@+c, but for aB(union sign)c I would have to type ;a,b@+c. So already by not doing any translation you would lose any indication of capitalization, which is important for latex encoding. Additionally the symbols used in latex coding could easily be misinterpreted as other things. A decimal before a letter indicates that the letter is a greek letter, for instance. I don't know enough to fully explain the issues and complications. I am not a braille expert. I only have enough experience to know that there will be quite a few. Here is a website that can give you a little background about nemeth braille math notation, http://braillebug.afb.org/nemeth_braille.asp

For general text-to-text mapping, xelatex is available when a mapping file needs to be used. The mapping file is user-definable (and needs to be compiled with teckit_compile.exe).

Mappings can be any character(s) to any other character(s).

Code

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Noto Serif}

\newfontface\fmapped[Mapping=latin-to-braille,Scale=2]{DejaVu Sans}

\begin{document}
\section{Mapping}
A many-to-many mapping can be done using xelatex and a text .map file compiled into a binary .tec file with \verb|teckit_compile.exe|. I define the mappings.

So, for example, when I type zero' in the mapped font, I get {\fmapped{zero}}.

And a' gives {\fmapped{a}}.

\end{document}

Mapping file

; TECkit mapping for TeX input conventions <-> Unicode characters

LHSName "latin-to-braille"
RHSName "UNICODE"

pass(Unicode)

; ligatures from Knuth's original CMR fonts
U+002D U+002D           <>  U+2013  ; -- -> en dash
U+002D U+002D U+002D    <>  U+2014  ; --- -> em dash

U+0027          <>  U+2019  ; ' -> right single quote
U+0027 U+0027   <>  U+201D  ; '' -> right double quote
U+0022           >  U+201D  ; " -> right double quote

U+0060          <>  U+2018  ;  -> left single quote
U+0060 U+0060   <>  U+201C  ;  -> left double quote

U+0021 U+0060   <>  U+00A1  ; ! -> inverted exclam
U+003F U+0060   <>  U+00BF  ; ? -> inverted question

; additions supported in T1 encoding
U+002C U+002C   <>  U+201E  ; ,, -> DOUBLE LOW-9 QUOTATION MARK
U+003C U+003C   <>  U+00AB  ; << -> LEFT POINTING GUILLEMET
U+003E U+003E   <>  U+00BB  ; >> -> RIGHT POINTING GUILLEMET

U+0061    <>  U+281B U+281C U+281D  ;  a

U+007A U+0065 U+0072 U+006F    <>  U+281A  ;  zero
`

Here or here one can find information about transforming Latex to Braille. The program is getting better since it was made. It is an effort made from the Mathematics Department of University of the Aegean in Greece, so that blind people can study math. It has already been used to make many documents accessible. It needs some programming skills. One can also find answers to frequently asked questions and a greek dictionary for math symbols in Braille. For more details you should contact the creator. It has successfully been tested for many and big tex documents and it is very fast.


text:
# MulticlassNonMaxSuppression¶

Versioned name : MulticlassNonMaxSuppression-8

Category : Sorting and maximization

Short description : MulticlassNonMaxSuppression performs multi-class non-maximum suppression of the boxes with predicted scores.

Detailed description : MulticlassNonMaxSuppression is a multi-phase operation. It implements non-maximum suppression algorithm as described below:

1. Let B = [b_0,...,b_n] be the list of initial detection boxes, S = [s_0,...,s_N] be the list of corresponding scores.

2. Let D = [] be an initial collection of resulting boxes. Let adaptive_threshold = iou_threshold.

3. If B is empty, go to step 9.

4. Take the box with highest score. Suppose that it is the box b with the score s.

5. Delete b from B.

6. If the score s is greater than or equal to score_threshold, add b to D, else go to step 9.

7. If nms_eta < 1 and adaptive_threshold > 0.5, update adaptive_threshold \*= nms_eta.

8. For each input box b_i from B and the corresponding score s_i, set s_i = 0 when iou(b, b_i) > adaptive_threshold, and go to step 3.

9. Return D, a collection of the corresponding scores S, and the number of elements in D.

This algorithm is applied independently to each class of each batch element. The operation feeds at most nms_top_k scoring candidate boxes to this algorithm. The total number of output boxes of each batch element must not exceed keep_top_k. Boxes of background_class are skipped and thus eliminated.

Attributes :

• sort_result

• Description : sort_result specifies the order of output elements.

• Range of values : class, score, none

• class - sort selected boxes by class id (ascending).

• score - sort selected boxes by score (descending).

• none - do not guarantee the order.

• Type : string

• Default value : none

• Required : no

• sort_result_across_batch

• Description : sort_result_across_batch is a flag that specifies whenever it is necessary to sort selected boxes across batches or not.

• Range of values : true or false

• true - sort selected boxes across batches.

• false - do not sort selected boxes across batches (boxes are sorted per batch element).

• Type : boolean

• Default value : false

• Required : no

• output_type

• Description : the tensor type of outputs selected_indices and valid_outputs.

• Range of values : i64 or i32

• Type : string

• Default value : i64

• Required : no

• iou_threshold

• Description : intersection over union threshold.

• Range of values : a floating-point number

• Type : float

• Default value : 0

• Required : no

• score_threshold

• Description : minimum score to consider box for the processing.

• Range of values : a floating-point number

• Type : float

• Default value : 0

• Required : no

• nms_top_k

• Description : maximum number of boxes to be selected per class.

• Range of values : an integer

• Type : int

• Default value : -1 meaning to keep all boxes

• Required : no

• keep_top_k

• Description : maximum number of boxes to be selected per batch element.

• Range of values : an integer

• Type : int

• Default value : -1 meaning to keep all boxes

• Required : no

• background_class

• Description : the background class id.

• Range of values : an integer

• Type : int

• Default value : -1 meaning to keep all classes.

• Required : no

• normalized

• Description : normalized is a flag that indicates whether boxes are normalized or not.

• Range of values : true or false

• true - the box coordinates are normalized.

• false - the box coordinates are not normalized.

• Type : boolean

• Default value : True

• Required : no

• nms_eta

• Description : eta parameter for adaptive NMS.

• Range of values : a floating-point number in close range [0, 1.0].

• Type : float

• Default value : 1.0

• Required : no

Inputs :

• 1 : boxes - tensor of type T and shape [num_batches, num_boxes, 4] with box coordinates. The box coordinates are layout as [xmin, ymin, xmax, ymax]. Required.

• 2 : scores - tensor of type T and shape [num_batches, num_classes, num_boxes] with box scores. The tensor type should be same with boxes. Required.

Outputs :

• 1 : selected_outputs - tensor of type T which should be same with boxes and shape [number of selected boxes, 6] containing the selected boxes with score and class as tuples [class_id, box_score, xmin, ymin, xmax, ymax].

• 2 : selected_indices - tensor of type T_IND and shape [number of selected boxes, 1] the selected indices in the flattened boxes, which are absolute values cross batches. Therefore possible valid values are in the range [0, num_batches \* num_boxes - 1].

• 3 : selected_num - 1D tensor of type T_IND and shape [num_batches] representing the number of selected boxes for each batch element.

When there is no box selected, selected_num is filled with 0. selected_outputs is an empty tensor of shape [0, 6], and selected_indices is an empty tensor of shape [0, 1].

Types

• T : floating-point type.

• T_IND : int64 or int32.

Example

<layer ... type="MulticlassNonMaxSuppression" ... >
<data sort_result="score" output_type="i64"/>
<input>
<port id="0">
<dim>3</dim>
<dim>100</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>3</dim>
<dim>5</dim>
<dim>100</dim>
</port>
</input>
<output>
<port id="5" precision="FP32">
<dim>-1</dim> <!-- "-1" means a undefined dimension calculated during the model inference -->
<dim>6</dim>
</port>
<port id="6" precision="I64">
<dim>-1</dim>
<dim>1</dim>
</port>
<port id="7" precision="I64">
<dim>3</dim>
</port>
</output>
</layer>


text:
## Essential University Physics: Volume 1 (4th Edition)

$3.679\times10^{-7}\ W$
We must calculate the amount of work that the bee is doing, which is equal to $mg\Delta x$. Using this, we find: $P=\frac{W}{\Delta t} = \frac{mg\Delta x}{\Delta t } = \frac{(2.5\times10^{-7})(9.81)(1.5\times10^{-3})(100)}{1}=3.679\times10^{-7}\ W$


text:
# Whitening transformation

A whitening transformation or sphering transformation is a linear transformation that transforms a vector of random variables with a known covariance matrix into a set of new variables whose covariance is the identity matrix meaning that they are uncorrelated and all have variance 1.[1] The transformation is called "whitening" because it changes the input vector into a white noise vector.

Several other transformations are closely related to whitening: 1) the decorrelation transform removes only the correlations but leaves variances intact, 2) the standardization transform sets variances to 1 but leaves correlations intact, and 3) a coloring transformation transforms a vector of white random variables into a random vector with a specified covariance matrix.[2]

## Definition

Suppose ${\displaystyle X}$ is a random (column) vector with non-singular covariance matrix ${\displaystyle M}$ and mean ${\displaystyle 0}$. Then the transformation ${\displaystyle Y=WX}$ with a whitening matrix ${\displaystyle W}$ satisfying the condition ${\displaystyle W^{T}W=M^{-1}}$ yields the whitened random vector ${\displaystyle Y}$ with unit diagonal covariance.

There are infinitely many possible whitening matrices ${\displaystyle W}$ that all satisfy the above condition. Commonly used choices are ${\displaystyle W=M^{-1/2}}$ (Mahalanobis or ZCA whitening), the Cholesky decomposition of ${\displaystyle M^{-1}}$ (Cholesky whitening), or the eigen-system of ${\displaystyle M}$ (PCA whitening).

Kessy et al. (2015) demonstrate that optimal whitening transforms can be singled out by investigating the cross-covariance and cross-correlation of ${\displaystyle X}$ and ${\displaystyle Y}$. For example, the unique optimal whitening transformation achieving maximal component-wise correlation between original ${\displaystyle X}$ and whitened ${\displaystyle Y}$ is produced by the whitening matrix ${\displaystyle W=P^{-1/2}V^{-1/2}}$ where ${\displaystyle P}$ is the correlation matrix and ${\displaystyle V}$ the variance matrix.

## Whitening a data matrix

Whitening a data matrix follows the same transformation as for random variables. An empirical whitening transform is obtained by estimating the covariance (e.g. by maximum likelihood) and subsequently constructing a corresponding estimated whitening matrix (e.g. by Cholesky decomposition).


text:
# zbMATH — the first resource for mathematics

Universal bounds for hyperbolic Dehn surgery. (English) Zbl 1087.57011
Let $$X$$ be a noncompact, finite volume, orientable hyperbolic $$3$$-manifold. Then it is the interior of a compact $$3$$-manifold with a finite number of torus boundary components. Thurston’s hyperbolic Dehn surgery theorem states that, for all but a finite number of Dehn surgeries on each boundary component, the resulting closed $$3$$-manifold has a hyperbolic structure. The paper under review gives the first universal bound on the number of nonhyperbolic Dehn surgeries per boundary torus, independent of the manifold $$X$$. If there is only one cusp, there are at most $$60$$ nonhyperbolic Dehn surgeries; if there are multiple cusps, at most $$114$$ surgery curves must be excluded from each boundary torus.
There is another approach to such a universal bound. M. Lackenby [Invent. Math. 140, No. 2, 243–282 (2000; Zbl 0947.57016)] and I. Agol [Geom. Topol. 4, 431–449 (2000; Zbl 0959.57009)] independently showed that if the flat geodesic length of a slope $$\gamma$$ on a boundary torus is greater than $$6$$, then the Dehn filled manifold is irreducible with infinite word hyperbolic fundamental group. Then I. Agol [loc. cit.] proved that, when there is a single cusp, at most $$12$$ surgeries fail to be irreducible or infinite word hyperbolic, by using C. Cao and G. R. Meyerhoff’s result [Invent. Math. 146, No. 3, 451–478 (2001; Zbl 1028.57010)]. This is remarkably close to the largest known number $$10$$ of nonhyperbolic Dehn surgeries.
For simplicity, assume that $$X$$ has a single cusp. The normalized length of a curve $$\gamma$$ on the boundary torus is defined to be the geodesic length after rescaling the metric on the torus to have area $$1$$. The main result shows that if the normalized length of $$\gamma$$ is at least $$7.515$$, then it is possible to deform the complete hyperbolic structure through cone-manifold structures on $$X(\gamma)$$ with $$\gamma$$ bounding a singular meridian disk until the cone angle reaches $$2\pi$$. This gives a smooth hyperbolic structure on $$X(\gamma)$$.
The proof has two parts. One part is analytic, showing that under the normalized length hypothesis on $$\gamma$$, there is a lower bound to the tube radius for any of cone-manifold structures on $$X(\gamma)$$ with angle at most $$2\pi$$, based on the local rigidity theory for cone-manifolds. The second part shows that, under certain geometric conditions, no degeneration of the hyperbolic structure is possible.
In the final section, the authors prove two more results. It is natural to ask whether every closed hyperbolic $$3$$-manifold can be obtained by starting with a noncompact finite volume $$3$$-manifold with one cusp and increasing the cone angle from $$0$$ to $$2\pi$$. In fact, they prove that if a closed hyperbolic $$3$$-manifold $$M$$ has a simple closed geodesic $$\tau$$ in $$M$$ with length at most $$0.111$$, then the hyperbolic structure on $$M$$ can be deformed to a complete hyperbolic structure on $$M-\tau$$ by decreasing the cone angle along $$\tau$$ from $$2\pi$$ to $$0$$. Secondly, let $$X$$ be a complete finite volume hyperbolic $$3$$-manifold with one cusp and let $$\gamma$$ be a surgery curve with normalized length at least $$7.515$$. Then they show that the difference between the volume of $$X(\gamma)$$ and $$X$$ is at most $$0.329$$, and also that every closed hyperbolic $$3$$-manifold with a closed geodesic of length at most $$0.162$$ has volume at least $$1.701$$.

##### MSC:
 57M50 General geometric structures on low-dimensional manifolds 57N10 Topology of general $$3$$-manifolds (MSC2010)
##### MathOverflow Questions:
Long non-deformable hyperbolic fillings
##### Keywords:
universal bound; hyperbolic Dehn surgery
Full Text:


text:
Two particles having charges separated by a distance

Two particles having charges of 0.600 nC and 5.40 nC are separated by a distance of 1.30 m.

A.) At what point along the line connecting the two charges is the net electric field due to the two charges equal to zero?

the electric field is zero at a point _______ m from .600nC

i found out the answer to this to be .325m. by doing the following:

E due to q1 is equal in magnitude to E due to q2 but in opposite direction

As both q1 and q2 are positive, the field is zero at a point in between them

As distance from q1 is L , distance from q2 is (1.3 - L)

kq1/L^2 = kq2/(1.2 - L)^2

(1.3 - L) / L= sq rt (q2 / q1)

(1.3 - L) = L* sq rt (q2 / q1)

1.3 = L [1+sq rt (q2 / q1)]

L = 1.3 / [1+sq rt (q2 / q1)]

L = 1.3 / [1+sq rt (5.40 / 0.600)]

L = 1.3 / [1+sq rt ( 9.00 )]

L = 1.3 / [1+ 3.0]

L = 1.3 / [ 4.0]

L=0.325 meter from 0.550 nC

Where would the net electric field be zero if one of the charges were negative.
Enter answer as a distance from the charge initially equal 0.600 nC . This is where i get lost, i don't know what to do next. please Help!
__________________

Related Introductory Physics Homework Help News on Phys.org
$$\vec{E_1} + \vec{E_2} = 0$$

Be careful about the vector directions.

should the answer be the same but just negative since i using the same values as before?

When I wrote, "You do it like you did the first one," I meant, you start it the same way. The algebra is different.

I apologize; I should have been clearer.

Thanks A Bunch!

You're welcome.


text:
Question by Student 200746306 Hello professor, I have a question about assignment 9 question #3. Products on a dry air have 86.85% nitrogen particulars. So, I think chemical formula that a CH4 + b O2 + c N2 ----> 9.7 CO2 + 0.5 CO + 2.95 O2 + d H2O + 86.85 N2 And I found that c is 92.4. But nitrogen doesn't reaction other particles So, I think that c is same value 86.85. I was confused to this thing. Isn't my calculate wrong?
 06.04.14
Yes, your calculation is wrong.. Since $\rm N_2$ doesn't react with other species, it should be conserved through the reaction. I'll give you 0.5 point bonus for this question. I would have given more if you would have typeset the chemical reaction better with the correct subscripts..
 Question by Student 200746306 Professor, I'm sorry to bother you by a question I have some question about assignment 9 question number 6. When water enter the chamber, Water, butane and air are all mixture same place?
 06.05.14
I guess what you mean is whether the water mixes with the butane. The answer is no, the water remains in the cooling jacket and does not mix with the fuel or the combustion products (the combustion takes place in one duct, while the water flows in another duct surrounding the first one). I already explained this in class... I'll give you 0.5 point bonus boost for this question.
Question by Student 201127144
Professor I have some question about Our latest assingment #8, #9 There is many 'ejected rate(m dot)' is exist
 Focus on air, I think
 "Total ' air's ' volume" = " ' vapor's ' volume in air " + " ' dry air's ' volume"
 But you say
 "Total air's volume" = " vapor's volume in air " = " dry air's volume"
'Vapor' and 'dry air' are exist in total air, however why they have same volume?
Hm, the question doesn't make sense. Explain better what is the problem — I didn't mention about the volume but the mass flow rates. Also, typeset your mathematics correctly.
 Question by Student 201127134 Solving assignment 8, no.5, i have to figure out mass flow rate of each duct, to obtain this, i have to divide volume flow rate[cubic meter per second] by specific volume[cubic meter per kg]. Therefore, i could find specific volume in the table, Figure A9, i could find specific volume. What i am confused is that, in the Fig A9, whether specific volume is (air+vapor)'s volume per mass of dry air or consists of only dry air's volume per mass of dry air. I think you have not mentioned about this in the class. Plus, expression of this in the Figure A9 is quite ambiguous for me.
 06.06.14
I strongly recommend not to use theories that I have not covered in class... All problems in the assignments and exams can be solved using the theory shown in class — do that and you'll score very well on the test! I will not give you a bonus boost for this question because it is out of the scope of this course.
 Question by Student 201214353 Professor I have a question about Assignment 6 #5-(c). To solve this question, i find $\bar{v}$ from generalized compressibility chart. And then I used Vander waals Eq to find $T_2$ But suddenly i thought, using $v'_R$ and generalized compressibility factor in state 2 is might be possible. (Not using Vander waals Eq) However difference between this two values($T_2$) is so big. Why is it so different? If I'm wrong, which one has error?
Your question is not so clear, you should give more details. But I think the problem in this case is that you are mixing two strategies together. To find $\overline{v}_2$ and $T_2$ try to use only one strategy: you can use either Van der waals or the generalized compressibility charts, but try to avoid using both on top of each other. The generalized compressibility charts is the strategy that is the most accurate and should be preferred in this case. I'll give you 1 point bonus for this question.
 Question by Student 201127101 I have a question about assign 8-6. After obtaining $\dot{m}$ and $h$, professor used the energy conservation equation. $$\dot{m}_{v4} h_{v4} + \dot{m}_{A4} h_{A4} + \dot{m}_{L2} - \dot{m}_{v4} h_{v3} - \dot{m}_{A4} h_{A3} - \dot{m}_{L1} = 0$$ After calculation, equation is $$\dot{m}_{v4} h_{v4} + \dot{m}_{A4} h_{A4} = 6417 [kJ/s] \cdots Ⅰ$$ And $h_{A4}$ = ${(C_p)}_A$ $T_4$ = 1kJ/kg $T_4$, $\dot{m}_{v4}$ = 0.63kg/s, $\dot{m}_{A4}$ = 15.25kg/s. Finally, $$h_{v4} + 24.2 T_4 [kJ/kgK] = 10186 [kJ/kg]$$ To solve this equation, you used following equation $$h_v ({T_4}^n) + 24.2 {T_4}^{n+1} [kJ/kgK] = 10186 [kJ/kg]$$ So answer is $$∴ T_4 = 314K$$ But I try to solve this problem by $\tilde{h}$ = $\frac{\dot{m}_{mix} h_{mix}}{\dot{m}_{A}}$. So I divided by $\dot{m}_{A4}$ = 15.25kg/s in Eq Ⅰ, $$\frac{\dot{m}_{v4} h_{v4} + \dot{m}_{A4} h_{A4}}{\dot{m}_{A4}} = 421 [kJ/kg]$$ But $$\frac{\dot{m}_{v4} h_{v4} + \dot{m}_{A4} h_{A4}}{\dot{m}_{A4}} = \frac{\dot{m}_{mix4} h_{mix4}}{\dot{m}_{A4}} = \tilde{h}_{4}$$ Therefore, $$∴ \tilde{h}_{4} = 421 [kJ/kg dryair]$$ But I can't obtain $T_4$ because psychro chart is small(Maximum $\tilde{h}$ = 100 [kJ/kg dryair]at psychro chart). Is my way wrong? Or Is graph small only ?  Thank you, I understood this problem. But $\omega_4$ is 0.0413... I can't use psychro chart because maximum $\omega$ is 0.03 at psychro chart.
There is a mistake in your reasoning. You define correctly the mixture enthalpy as used in the psychrometric chart: $$\tilde{h}_{4}=\frac{\dot{m}_{v4} h_{v4} + \dot{m}_{A4} h_{A4}}{\dot{m}_{A4}} = \frac{\dot{m}_{mix4} h_{mix4}}{\dot{m}_{A4}}$$ But you must express $h_{\rm A4}=C_P T_{\rm A4}$ with $T_{\rm A4}$ in Celcius. Also, when calculating the other air enthalpy $h_{\rm A3}$ you must use Celcius degrees, not Kelvin. Celcius must be used and not Kelvin because those who made the psychrometric chart defined their enthalpies this way. Try it again ;) I'll give you 1.5 point bonus boost for this question. After trying again, you still can't find the solution because $\omega$ is off the chart. You are doing nothing wrong this time, you have just encountered a limitation of the psychro chart when determining the enthalpies. Here, there's no choice but to use table a2 and to iterate....
 Previous   1  ...  5 ,  6 ,  7 ,  8    Next  •  PDF 1✕1 2✕1 2✕2  •  New Question
 $\pi$


text:
how many apples?

chubbs145

How many ways can six identical apples be passed out to nine people if any one of the nine people can choose an unlimited amount of apples?

9^6 = 531,441 ways

Plato

MHF Helper
How many ways can six identical apples be passed out to nine people if any one of the nine people can choose an unlimited amount of apples?
How can six become an unlimited amount?

chubbs145

unlimited such that they can choose any number of apples.

lozts

well order doesn't matter since they are identical apples and repetition is allowed as stated in the question so this is a selection problem...I think you can figure it out from here.

$$\displaystyle (k+(n-1))!/(k!(n-1)!)$$

Plato

MHF Helper
unlimited such that they can choose any number of apples.
But there are only six to begin with. That is nonsense.

lozts

I think he means someone could pick all 6...not really an unlimited amount of apples. At least that's how I interpreted it. (Wondering) Could you clarify?

chubbs145

yes that is correct...sorry for the misunderstanding

lozts

then yes, this is a selection problem.

chubbs145