"Light Makes Right"
February 20, 1989
Volume 2, Number 2
Compiled by
All contents are copyright (c) 1989, all rights reserved by the individual authors
Archive locations: anonymous FTP at
ftp://ftp-graphics.stanford.edu/pub/Graphics/RTNews/,
wuarchive.wustl.edu:/graphics/graphics/RTNews, and many others.
You may also want to check out the Ray Tracing News issue guide and the ray tracing FAQ.
I've put all the comp.graphics postings at the end, and the good news is that the queue is now empty. The `Sound Tracing' postings to comp.graphics were many and wordy. I've tried to pare them down to references, interesting questions that arose, and informed (or at least informed-sounding to my naive ears) opinions.
back to contents
[this mail path is just a good guess - does gould have an arpa connection? The uucp path I use is: turner_whitted hpfcrs!hpfcla!hplabs!sun!gould!rti!ndl!jtw ]
# Michael John Muuss -- ray-tracing for predictive analysis of 3-D CSG models
# Leader, Advanced Computer Systems Team
# Ballistic Research Lab
# APG, MD 21005-5066
# USA
# ARPANET<EMAIL_ADDRESS>#<PHONE_NUMBER> [telephone is discouraged, use E-mail instead]
alias mike_muuss<EMAIL_ADDRESS>I lead BRL's Advanced Computer Systems Team (ACST) in research projects in (a) CSG solid modeling, ray-tracing, and analysis, (b) advanced processor architectures [mostly MIMD of late], (c) high-speed networking, and (d) operating systems. We are the developers of the BRL-CAD Package, which is a sophisticated Combinatorial Solid Geometry (CSG) solid modeling system, with ray-tracing library, several lighting models, a variety of non-optical "lighting" models (eg, radar) [available on request], a device independent framebuffer library, a collection of image-processing tools, etc. This software totals about 150,000 lines of C code, which we make available in source form under the terms of a "limited distribution agreement" at no charge.
My personal interests wander all over the map, right now I'm fiddling with some animation software, some D/A converters for digital music processing, and some improvements to our network-distributed ray-tracer protocol.
Thanks for the invitation to join!
Best, -mike
back to contents
In FY87 two major releases of the BRL CAD Package software were made (Feb-87, July-87), along with two editions of the associated 400 page manual. The package includes a powerful solid modeling capability and a network-distributed image-processing capability. This software is now running at over 300 sites. It has been distributed to 42 academic institutions in twenty states and four countries including Yale, Princeton, Stanford, MIT,USC, and UCLA. The University of California - San Diego is using the package for rendering brains in their Brain Mapping Project at the Quantitative Morphology Laboratory. 75 different businesses have requested and received the software including 23 Fortune 500 companies including: General Motors, AT&T, Crysler Motors Corporation, Boeing, McDonnell Douglas, Lockheed, General Dynamics, LTV Aerospace & Defense Co., and Hewlett Packard. 16 government organizations representing all three services, NSA, NASA, NBS and the Veterns Administration are running the code. Three of the four national laboratories have copies of the BRL CAD package. More than 500 copies of the manual have been distributed.
BRL-CAD started in 1979 as a task to provide an interactive graphics editor for the BRL target description data base.
Today it is > 100,00 lines of C source code:
Solid geometric editor Ray tracing utilities Lighting model Many image-handling, data-comparison, and other supporting utilities
It runs under UNIX and is supported over more than a dozen product lines from Sun Workstations to the Cray 2.
In terms of geometrical representation of data, BRL-CAD supports:
the original Constructive Solid Geometry (CSG) BRL data base which has been used to model > 150 target descriptions, domestic and foreign
extensions to include both a Naval Academy spline (Uniform B-Spline Surface) as well as a U. of Utah spline (Non-Uniform Rational B-Spline [NURB] Surface) developed under NSF and DARPA sponsorship
a facerted data representation, (called PATCH), developed by Falcon/Denver Research Institute and used by the Navy and Air Force for vulnerability and signature calculations (> 200 target descriptions, domestic and foreign
It supports association of material (and other attribute properties) with geometry which is critical to subsequent applications codes.
It supports a set of extensible interfaces by means of which geometry (and attribute data) are passed to applications:
Ray casting Topological representation 3-D Surface Mesh Generation 3-D Volume Mesh Generation Analytic (Homogeneous Spline) representation
Applications linked to BRL-CAD:
o Weights and Moments-of-Inertia o An array of Vulnerability/Lethality Codes o Neutron Transport Code o Optical Image Generation (including specular/diffuse reflection, refraction, and multiple light sources, animation, interference) o Bistatic laser target designation analysis o A number of Infrared Signature Codes o A number of Synthetic Aperture Radar Codes (including codes due to ERIM and Northrop) o Acoustic model predictions o High-Energy Laser Damage o High-Power Microwave Damage o Link to PATRAN [TM] and hence to ADINA, EPIC-2, NASTRAN, etc. for structural/stress analysis o X-Ray calculation
BRL-CAD source code has been distributed to approximately 300 computer sites, several dozen outside the US.
__________
To obtain a copy of the BRL CAD Package distribution, you must send enough magnetic tape for 20 Mbytes of data. Standard nine-track half-inch magtape is the strongly preferred format, and can be written at either 1600 or 6250 bpi, in TAR format with 10k byte records. For sites with no half-inch tape drives, Silicon Graphics and SUN tape cartridges can also be accommodated. With your tape, you must also enclose a letter indicating
(a) who you are, (b) what the BRL CAD package is to be used for, (c) the equipment and operating system(s) you plan on using, (d) that you agree to the conditions listed below.
This software is an unpublished work that is not generally available to the public, except through the terms of this limited distribution. The United States Department of the Army grants a royalty-free, nonexclusive, nontransferable license and right to use, free of charge, with the following terms and conditions:
1. The BRL CAD package source files will not be disclosed to third parties. BRL needs to know who has what, and what it is being used for.
2. BRL will be credited should the software be used in a product or written about in any publication. BRL will be referenced as the original source in any advertisements.
3. The software is provided "as is", without warranty by BRL. In no event shall BRL be liable for any loss or for any indirect, special, punitive, exemplary, incidental, or consequential damages arising from use, possession, or performance of the software.
4. When bugs or problems are found, you will make a reasonable effort to report them to BRL.
5. Before using the software at additional sites, or for permission to use this work as part of a commercial package, you agree to first obtain authorization from BRL.
6. You will own full rights to any databases or images you create with this package.
All requests from US citizens, or from US government agencies should be sent to:
Mike Muuss Ballistic Research Lab Attn: SLCBR-SECAD APG, MD 21005-5066
If you are not a US citizen (regardless of any affiliation with a US industry), or if you represent a foreign-owned or foreign-controlled industry, you must send your letter and tape through your Ambassador to the United States in Washington DC. Have your Ambassador submit the request to:
Army Headquarters Attn: DAMI-FL Washington, DC 20310
Best Wishes,
-Mike Muuss
Leader, Advanced Computer Systems Team
ArpaNet: <Mike @ BRL.ARPA>
________
p.s. from David Rogers:
If you have the _Techniques in Computer Graphics_ book from Springer-Verlag the frontispiece was done with RT the BRL ray tracer. It is also discussed in a paper by Mike Muuss in that book.
________
p.s. from Eric Haines:
Mike Muuss was kind enought to send me the documentation (some two inches thick) for the BRL package. I haven't used the BRL software (sadly, it does not seem to run on my HP machine yet - I hope someone will do a conversion someday...), but the package looks pretty impressive. Also, such things as the Utah RLE package and `Cake' (an advanced form of `make') come as part of the distribution. There are also interesting papers on the system, the design philosophy, parallelism, and many other topics included in the documentation.
back to contents
(article by Eric Haines)
Roy Hall's book is out, and all I'll say about it is that you should have one. The text (what little I've delved into so far) is well written and complemented with many explanatory figures and images. There are also many appendices (about 100 pages worth) filled with concise formulae and "C" code. Below is the top-level Table of Contents below to give you a sense of what the book covers.
The "C" code will probably be available publicly somewhere sometime soon. I'll post the details here when it's ready for distribution.
1.0 Introduction 8 pages 2.0 The Illumination Process 36 pages 3.0 Perceptual Response 18 pages 4.0 Illumination Models 52 pages 5.0 Image Display 40 pages Appendix I - Terminology 2 pages Appendix II - Controlling Appearance 10 pages Appendix III - Example Code 86 pages Appendix IV - Radiosity Algorithms 14 pages Appendix V - Equipment Sources 4 pages References 8 pages Index 4 pages
back to contents
How to generate a uniformly distributed set of rays over the unit sphere: Generate a point inside the bi-unit cube. (Three uniform random numbers in [-1,1].) Is that point inside the unit sphere (and not at the origin)? If not, toss it and generate another (not too often.) If so, treat it as a vector and normalize it. Poof, a vector on the unit sphere. This won't guarantee a isotropic covering of the unit sphere, but is helpful to generate random samples.
--Jeff Goldsmith
________
One method is simply to do a longitude/latitude split-up of the sphere (and randomly sampling within each patch), but instead of making the latitude lines at even degree intervals, put the latitude divisions at even intervals along the sphere axis (instead of even altitude [a.k.a. theta] angle intervals). Equal axis divisions give us equal areas on the sphere's surface (amazingly enough - I didn't believe it was this simple when I saw this in the Standard Mathematics Tables book, so rederived it just to be sure).
For instance, let's say you'd like 32 samples on a unit sphere. Say we make 8 longitude lines, so that now we want to make 4 patches per slice, and so wish to make 4 latitudinal bands of equal area. Splitting up the vertical axis of the sphere, we want divisions at -0.5, 0, and 0.5. To change these divisions into altitude angles, we simply take the arcsin of the axis values, e.g. arcsin(0.5) is 30 degrees. Putting latitude lines at the equator and at 30 and -30 degrees then gives us equal area patches on the sphere. If we wanted 5 patches per slice, we would divide the axis of the unit sphere (-1 to 1) into 5 pieces, and so get -0.6,-0.2,0.2,0.6 as inputs for arcsin(). This gives latitude lines on both hemispheres at 36.87 and 11.537 degrees.
The problem with the whole technique is deciding how many longitude vs. latitude lines to make. Too many longitude lines and you get narrow patches, too many latitude and you get squat patches. About 2 * long = lat seems pretty good, but this is just a good guess and not tested.
Another problem is getting an even jitter to each patch. Azimuth is obvious, but you have to jitter in the domain for the altitude. For example, in a patch with an altitude from 30 to 90 degrees, you cannot simply select a random degree value between 30 and 90, but rather must get a random value between 0.5 and 1 (the original axis domain) and take the arcsin of this to find the degree value. (If you didn't do it this way, the samples would tend to be clustered closer to the poles instead of evenly).
Yet another problem with the above is that you get patches whose geometry and topology can vary widely. Patches at the pole are actually triangular, and patches near the equator will be much more squat than those closer to the poles. If you would rather have patches with more of an equal extent than a perfectly equal area, you could use a cube with a grid on each face cast upon the sphere (radiosity uses half of this structure for hemi-cubes). The areas won't be equal, but they'll be pretty close and you can weight the samples accordingly. There are many other nice features to using this cast cube configuration, like being able to use scan-line algorithms, being able to vary grid size per face (or even use quadtrees), being able to access the structure without having to perform trigonometry, etc. I use it to tessellate spheres in the SPD package so that I won't get those annoying clusterings at the poles of the sphere, which can be particularly noticeable when using specular highlighting.
--Eric Haines
back to contents
First an introduction. I'm a Computer Graphics student at the Technical University of Delft, The Netherlands. My assignment was to do some research about distributed ray tracing. I actually implemented a distributed ray tracer, but during experiments a very strange problem came up. I implemented depth-of-field exactly in the way R.L. Cook described in his paper. I decided to do some experiments with the shape of the f-stop of the simulated camera. First I simulated a square-shaped f-stop. Now I now this isn't the real thing in an actual photocamera, but I just tried. I divided the square f-stop in a regular raster of N x N sub-squares, just in the way you would subdivide a pixel in subpixels. All the midpoints of the subsquares were jittered in the usual way. Then I rendered a picture. Now here comes the strange thing. My depth-of-field effect was pretty accurate, but on some locations some jaggies were very distinct. There were about 20 pixels in the picture that showed very clear aliasing of texture and object contours. The funny thing was that the rest of the picture seemed alright. When I rendered the same picture with a circle-shaped f-stop, the jaggies suddenly disappeared! I browsed through my code of the square f-stop, but I couldn't find any bugs. I also couldn't find a reasonable explanation of the appearance of the jaggies. I figure it might have something to do with the square being not point-symmetric, but that's as far as I can get. I would like to know if someone has experience with the same problem, and does somebody has a good explanation for it ...
Many thanks in advance, Marinko Laban
back to contents
Hello.
I'm adding fresnel reflectance to my shader. I'm in need of data for reflectance as a function of frequency for non-polarized light at normal incidence. I would like to build a stockpile of this data for a wide variety of materials. I currently have some graphs of this data, but would much prefer the actual sample points in place of the curve-fitted stuff I have now. (not to mention the typing that you might save me).
If you have stuff such as this, and can share it with me, I would be most appreciative. Also, if there is some Internet place where I might look, that would be fine too.
Thanks,
Mark
back to contents
It contains answers to most of the "most asked" questions from that period as well as most of the sources posted to comp.graphics.
Now that you know what is there, you can find it in directory pub/graphics at albanycs.albany.edu.
If you have anything to add to the collection or wish to update something in it, or have have some ideas on how to organize it, please contact me at one of the following.
[There's also a subdirectory called "ray-tracers" which has source code for you-know-whats and other software--EAH]
-------- Raymond S. Brand<EMAIL_ADDRESS>3A Pinehurst Ave<EMAIL_ADDRESS>Albany NY 12203 FidoNet 1:7729/255<PHONE_NUMBER>)<PHONE_NUMBER> BBS:<PHONE_NUMBER>
back to contents
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Mark VandeWettering) writes:
< }< Finally, has anyone come up with a raytracer whose refraction model
< }< takes into account the varying indices of refraction of different light
< }< frequencies? In other words, can I find a raytracer that, when looking
< }< through a prism obliquely at a light source, will show me a rainbow?
< }
< } This could be tough. The red, green, and blue components of monitors
< }only simulate the full color spectrum. On a computer, yellow is a mixture
< }of red and green. In real life, yellow is yellow. You'd have to cast a
< }large number of rays and use a large amount of computer time to simulate
< }a full color spectrum. (Ranjit pointed this out in his article and went
< }into much greater detail).
<
< Actually, this problem seems the easiest. We merely have to trace rays
< of differing frequency (perhaps randomly sampled) and use Fresnel's
< equation to determine refraction characteristics. If you are trying to
< model phase effects like diffraction, you will probably have a much more
< difficult time.
This has already been done by a number of people. One paper by T. L. Kunii describes a renderer called "Gemstone Fire" or something. It models refraction as you suggest to get realistic looking gems. Sorry, but I can't recall where (or if) it has been published. I have also read several (as yet) unpublished papers which do the same thing in pretty much the same way.
David Jevans, U of Calgary Computer Science, Calgary AB T2N 1N4 Canada uucp: ...{ubc-cs,utai,alberta}!calgary!jevans
________
>From<EMAIL_ADDRESS>(Ronald Coifman)
>> This could be tough. ...
>
>This is the easy part...
>You fire say 16 rays per pixel anyway to do
>antialiasing, and assign each one a color (frequency). When the ray
>is refracted through an object, take into account the index of
>refraction and apply Snell's law. A student here did that
>and it worked fine. He simulated rainbows and diffraction effects
>through prisms.
>
> (Spencer Thomas (U. Utah, or is it U. Mich. now?) also implemented
>the same sort of thing at about the same time.
Yep, I got a Masters degree for doing that (I was the student Rob is refer- ring to). The problem in modelling dispersion is to integrate the primary sample, over the visible frequencies of light. Using the Monte Carlo integra- tion techniques of Cook on the visible spectrum yields a nice, fairly simple solution, albeit at the cost of supersampling at ~10-20 rays per pixel, where dispersive sampling is required.
Thomas used a different approach. He adaptively subdivided the spectrum based on the angle of spread of the dispersed ray, given the range of frequen- cies it represents. This can be more efficient, but can also have unlimited growth in the number of samples. Credit Spencer Thomas; he was first.
As at least one person has pointed out, perhaps the most interesting aspect of this problem is that of representing the spectrum on an RGB monitor. That's an open problem; I'd be really interested in hearing about any solutions that people have come up with. (No, the obvious CIE to RGB conversion doesn't work worth a damn.)
My solution(s) can be found in "A Realistic Model of Refraction for Computer Graphics", F. Kenton Musgrave, Modelling and Simulation on Microcomputers 1988 conference proceedings, Soc. for Computer Simulation, Feb. 1988, in my UC Santa Cruz Masters thesis of the same title, and (hopefully) in an upcoming paper "Prisms and Rainbows: a Dispersion Model for Computer Graphics" at the Graphics Interface conference this summer. (I can e-mail troff sources for these papers to interested parties, but you'll not get the neat-o pictures.)
For a look at an image of a physical model of the rainbow, built on the dispersion model, see the upcoming Jan. IEEE CG&A "About the Cover" article.
Ken Musgrave
Ken Musgrave arpanet<EMAIL_ADDRESS>Yale U. Math Dept. Box 2155 Yale Station Primary Operating Principle: New Haven, CT 06520 Deus ex machina
back to contents
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Kjartan Pierre Emilsson Jardedlisfraedi) asks:
> Has anyone had any experience with the application of ray-tracing techniques
> to simulate acoustics, i.e. the formal equivalent of ray-tracing using sound
> instead of light? ...
Yes, John Walsh, Norm Dadoun, and others at the University of British Columbia have used ray tracing-like techniques to simulate acoustics. They called their method of tracing polygonal cones through a scene "beam tracing" (even before Pat Hanrahan and I independently coined the term for graphics applications).
Walsh et al simulated the reflection and diffraction of sound, and were able to digitally process an audio recording to simulate room acoustics to aid in concert hall design. This is my (four year old) bibliography of their papers:
%A Norm Dadoun %A David G. Kirkpatrick %A John P. Walsh %T Hierarchical Approaches to Hidden Surface Intersection Testing %J Proceedings of Graphics Interface '82 %D May 1982 %P 49-56 %Z hierarchical convex hull or minimal bounding box to optimize intersection testing between beams and polyhedra, for graphics and acoustical analysis %K bounding volume, acoustics, intersection testing
%A John P. Walsh %A Norm Dadoun %T The Design and Development of Godot: A System for Room Acoustics Modeling and Simulation %B 101st meeting of the Acoustical Society of America %C Ottawa %D May 1981
%A John P. Walsh %A Norm Dadoun %T What Are We Waiting for? The Development of Godot, II %B 103rd meeting of the Acoustical Society of America %C Chicago %D Apr. 1982 %K beam tracing, acoustics
%A John P. Walsh %T The Simulation of Directional Sound Sources in Rooms by Means of a Digital Computer %R M. Mus. Thesis %I U. of Western Ontario %C London, Canada %D Fall 1979 %K acoustics
%A John P. Walsh %T The Design of Godot: A System for Room Acoustics Modeling and Simulation, paper E15.3 %B Proc. 10th International Congress on Acoustics %C Sydney %D July 1980
%A John P. Walsh %A Marcel T. Rivard %T Signal Processing Aspects of Godot: A System for Computer-Aided Room Acoustics Modeling and Simulation %B 72nd Convention of the Audio Engineering Society %C Anaheim, CA %D Oct. 1982
Paul Heckbert, CS grad student 508-7 Evans Hall, UC Berkeley UUCP: ucbvax!miro.berkeley.edu!ph Berkeley, CA 94720 ARPA<EMAIL_ADDRESS>________
>From<EMAIL_ADDRESS>(David Jevans)
Subject: Re: Sound tracing
[source: comp.graphics]
Three of my friends did a sound tracer for an undergraduate project last year. The system used directional sound sources and microphones and a ray-tracing-like algorithm to trace the sound. Sound sources were digitized and stored in files. Emitters used these sound files. At the end of the 4 month project they could digitize something, like a person speaking, run it through the system, then pump the results through a speaker. An acoustic environment was built (just like you build a model for graphics). You could get effects like echoes and such. Unfortunately this was never published. I am trying to convince them to work on it next semester...
David Jevans, U of Calgary Computer Science, Calgary AB T2N 1N4 Canada uucp: ...{ubc-cs,utai,alberta}!calgary!jevans
________
>From<EMAIL_ADDRESS>(Eugene Miya)
May I also add that you research all the work on acoustic lasers done at places like the Applied Physics Lab.
________
>From<EMAIL_ADDRESS>(Daniel S. Riley)
Organization: Cornell Theory Center, Cornell University, Ithaca NY
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(David P. Cook) writes:
>>In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Kelly Booth) writes:
>>>[...] It is highly unlikely that a couple of hackers thinking about
>>>the problem for a few minutes will generate startling break throughs
>>>(possible, but not likely).
Ok, I think most of us can agree that this was a reprehensible attempt at arbitrary censorship of an interesting discussion. Even if some of the discussion is amateurish and naive.
> The statement made above
[...]
> Is appalling! Sound processing is CENTURIES behind image processing.
> If we were to apply even a few of our common algorithms
> to the audio spectrum, it would revolutionize the
> synthizer world. These people are living in the stone
> age (with the exception of a few such as Kuerdswell [sp]).
On the other hand, I think David is *seriously* underestimating the state of the art in sound processing and generation. Yes, Ray Kurzweil has done lots of interesting work, but so have many other people. Of the examples David gives, most (xor'ing, contrast stretching, fuzzing, antialiasing and quantization) are as elementary in sound processing as they are in image processing. Sure, your typical music store synthesizer/sampler doesn't offer these features (though some come close--especially the E-mu's), but neither does your vcr. And the work Kurzweil music and Kurzweil applied intelligence have done on instrument modelling and speech recognition go WAY beyond any of these elementary techniques.
The one example I really don't know about is ray tracing. Sound tracing is certainly used in some aspects of reverb design, and perhaps other areas of acoustics, but I don't know at what level diffraction is handled--and diffraction is a big effect with sound propagation. You also have to worry about phases, interference, and lots of other fun effects that you can (to first order) ignore in ray tracing. References, anyone? (Perhaps I should resubscribe to comp.music, and try there...)
(off on a tangent: does any one know of work on ray tracers that will do things like coherent light sources, interference, diffraction, etc? In particular, anyone have a ray tracer that will do laser speckling right? I'm pretty naive about the state of the art in image synthesis, so I have no idea if such beasts exist. It looks like a hard problem to me, but I'm just a physicist...)
>No, this is not a WELL RESEARCHED area as Kelly would have us believe. The
>sound people are generally not attacking sound synthesis as we attack
>vision synthesis. This is wonderful thinking, KEEP IT UP!
Much work in sound synthesis has been along lines similar to image synthesis. Some of it is proprietary, and the rest I think just receives less attention, since sound synthesis doesn't have quite the same level of perceived usefulness, or the "sexiness", of image synthesis. But it is there. Regardless, I agree with David that this is an interesting discussion, and I certainly don't mean to discourage any one from thinking or posting about it.
-Dan Riley<EMAIL_ADDRESS>cornell!batcomputer!riley) -Wilson Lab, Cornell U.
________
>From<EMAIL_ADDRESS>(Kjartan Pierre Emilsson Jardedlisfraedi)
Newsgroups: comp.graphics
We would like to begin by thanking everybody for their good replies, which will in no doubt come handy. We intend to try to implement such a sound tracer soon and we had already made some sort of model for it, but we were checking whether there was some info lying around about such tracers. It seems that our idea wasn't far from actual implementations and that is reassuring.
For the sake of Academical Curiosity and overall Renaissance-like Enlightenment in the beginning of a new year we decided to submit our crude model to the critics and attention of this newsgroup, hoping that it won't interfere too much with the actual subject of the group, namely computer graphics.
We have some volume with an arbitrary geometry (usually simple such as a concert hall or something like that). Squares would work just fine as primitives. Each primitive has definite reflection properties in addition to some absorption filter which possibly filters out some frequencies and attenuates the signal. In this volume we put a sound emitter which has the following form:
The sound emitter generates a sound sample in the form of a time series with a definite mean power P. The emitter emits the sound with a given power density given as some spherical distribution. For simplicity we tessellate this distribution and assign to each patch the corresponding mean power.
At some other point we place the sound receptor which has the following form:
We take a sphere and cut it in two equal halves, and then separate the two by some distance d. We then tessellate the half-spheres (not including the cut). We have then a crude model of ears.
Now for the actual sound tracing we do the following:
For each patch of the two half-spheres, we cast a ray radially from the center, and calculate an intersection point with the enclosing volume. From that point we determine which patch of the emitter this corresponds to, giving us the emitted power. We then pass the corresponding time series through the filter appropriate to the given primitives, calculate the reflected fraction, attenuate the signal by the square of the distance, and eventually determine the delay of the signal.
When all patches have been traced, we sum up all the time series and output the whole lot through some stereo device.
A more sophisticated model would include secondary rays and sound 'shadowing' (The shadowing being a little tricky as it is frequency dependent)
pros & cons ?
Happy New Year !! -Kjartan & Dagur
Kjartan Pierre Emilsson Science Institute - University of Iceland Dunhaga 3 107 Reykjavik Iceland Internet<EMAIL_ADDRESS>________
>From<EMAIL_ADDRESS>(Brent)
Organization: In Touch Ministries, Atlanta, GA
Ok, here's some starting points: check out the work of M. Schroeder at the Gottingen. (Barbarian keyboard has no umlauts!) Also see the recent design work on the Orange County Civic Auditorium and the concert hall in New Zealand. These should get you going in the right direction. Dr. Schroeder laid the theoretical work and others ran with it. As far as sound ray tracing and computer acoustics being centuries behind, I doubt it. Dr. S. has done things like record music in stereo in concert halls, digitized it, set up playback equipment in an anechoic chamber (bldg 15 at Murry Hill), measured the path from the right speaker to the left ear, and from the left speaker to the right ear, digitized the music and did FFTs to take out the "crossover paths" he measured. Then the music played back sounded just like it did in the concert hall. All this was done over a decade ago.
Also on acoustic ray tracing: sound is much "nastier" to figure than pencil-rays of light. One must also consider the phase of the sound, and the specific acoustic impedance of the reflecting surfaces. Thus each reflection introduces a phase shift as well as direction and magnitude changes. I haven't seen too many optical ray-tracers worrying about interference and phase shift due to reflecting surfaces. Plus you have to enter vast world of psychoacoustics, or how the ear hears sound. In designing auditoria one must consider "binaural dissimilarity" (Orange County) and the much-debated "auditory backward inhibition" (see the Lincoln Center re-designs). Resonance?? how many optical chambers resonate? (outside lasers?) All in all, modern acoustic simulations bear much more resemblance to Quantum Mechanic "particle in the concert hall" type calculations than to simple ray-traced optics.
Postscript: eye-to-source optical ray tracing is a restatement of Rayleigh's "reciprocity principle of sound" of about a century ago. Acoustitions have been using it for at least that long.
happy listening,
brent laminack (gatech!itm!brent)
________
Reply-To<EMAIL_ADDRESS>(Jerry J Trantow) Subject: Geometric Acoustics (Sound Tracing) Summary: Not so easy, but here are some papers Organization: University of Wisconsin-Milwaukee
Some of the articles I have found include
Criteria for Quantitative Rating and Optimum Design on Concert Halls
Hulbert, G.M. Baxa, D.E. Seireg, A. University of Wisconsin - Madison J Acoust Soc Am v 71 n 3 Mar 83 p 619-629 ISSN 0001-4966, Item Number: 061739
Design of room acoustics and a MCR reverberation system for Bjergsted Concert hall in Stavanger
Strom, S. Krokstad, A. Sorsdal, S. Stensby, S. Appl Acoust v19 n6 1986 p 465-475 Norwegian Inst of Technology, Trondheim, Norw ISSN 0003-682X, Item Number: 000913
I am also looking for an English translation of:
Ein Strahlverfolgungs-Verafahren Zur Berechnung von Schallfelern in Raemem [ Ray-Tracing Program for the calculation of sound fields of rooms ]
Voralaender, M. Acoustica v65 n3 Feb 88 p 138-148 ISSN 0001-7884, Item Number: 063350
If anyone is interested in doing a translation I can send the German copy that I have.
A good literature search can discover plenty of articles, quite a few of which are about architectural design of music halls. With a large concert hall, the calculations are easier because of the dimensions. (the wavelength is small compared to the dimensions of the hall)
The cases I am interested in are complicated by the fact that I want to work with relatively small rooms, large sources, and to top it off low (60hz) frequencies. I vaguely remember seeing a blurb somewhere about a program done by BOSE ( the speaker company) that calculated sound fields generated by speakers in a room. I would appreciate any information on such a beast.
The simple source for geometric acoustics is described in Beranek's Acoustic in the chapter on Radiation of Sound. To better appreciate the complexity from diffraction, try the chapter on The Radiation and Scattering of Sound in Philip Morse's Vibration and Sound ISBN 0-88318-287-4.
I am curious as to the commercial software that is available in this area. Does anyone have any experience they could comment on???
______
>From<EMAIL_ADDRESS>(Mark VandeWettering)
Subject: More Sound Tracing
Organization: University of Oregon, Computer Science, Eugene OR
I would like to present some preliminary ideas about sound tracing, and critique (hopefully profitably) the simple model presented by Kjartan Pierre Emilsson Jardedlisfraedi. (Whew! and I thought my name was bad, I will abbreviate it to KPEJ)
CAVEAT READER: I have no expertise in acoustics or sound engineering. Part of the reason I am writing this is to test some basic assumptions that I have made during the course of thinking about sound tracing. I have done little/no research, and these ideas are my own.
KJEP had a model related below:
> We have some volume with an arbitrary geometry (usually simple such
> as a concert hall or something like that). Squares would work just
> fine as primitives. Each primitive has definite reflection
> properties in addition to some absorption filter which possibly
> filters out some frequencies and attenuates the signal.
One interesting form of sound reflector might be the totally diffuse reflector (Lambertian reflection). It seems that if this is the assumption, then the appropriate algorithm to use might be radiosity, as opposed to raytracing. Several problems immediately arise:
1. how to handle diffraction and interference? 2. how to handle "relativistic effects" (caused by the relatively slow speed of sound)
The common solution to 1 in computer graphics is to ignore it. Is this satisfactory in the audio case? Under what circumstances or applications is 1 okay?
Point 2 is not often considered in computer graphics, but in computerized sound generation, it seems critical to accurate formation of echo and reverberation effects. To properly handle time delay in radiosity would seem to require a more difficult treatment, because the influx of "energy" at any given time from a given patch could depend on the outgoing energy at a number of previous times. This seems pretty difficult, any immediate ideas?
> Now for the actual sound tracing we do the following:
>
> For each patch of the two half-spheres, we cast a ray
> radially from the center, and calculate an intersection
> point with the enclosing volume. From that point we
> determine which patch of the emitter this corresponds to,
> giving us the emitted power. We then pass the corresponding
> time series through the filter appropriate to the given
> primitives, calculate the reflected fraction, attenuate the
> signal by the square of the distance, and eventually
> determine the delay of the signal.
>
> When all patches have been traced, we sum up all the time
> series and output the whole lot through some stereo device.
One open question: how much directional information is captured by your ears? Since you can discern forward/backward sounds as well as left/right, it would seem that ordinary stereo headphones are incapable of reproducing sounds as complex as one would like. Can the ears be fooled in clever ways?
The only thing I think this model lacks is secondary "rays" or echo/reverb effects. Depending on how important they are, radiosity algorithms may be more appropriate.
Feel free to comment on any of this, it is an ongoing "thought experiment", and has made a couple of luncheon conversations quite interesting.
Mark VandeWettering
________
>From<EMAIL_ADDRESS>(Kelly Booth)
Organization: U. of Waterloo, Ontario
In article<EMAIL_ADDRESS><EMAIL_ADDRESS>(Mark VandeWettering) writes:
>
> 1. how to handle diffraction and interference?
> 2. how to handle "relativistic effects" (caused by
> the relatively slow speed of sound)
>
> The common solution to 1 in computer graphics is to ignore it.
Hans P. Moravec, "3D Graphics and Wave Theory" Computer Graphics 15:3 (August, 1981) pp. 289-296. (SIGGRAPH '81 Proceedings)
[Trivia Question: Why does the index for the proceedings list this as starting on page 269?]
Also, something akin to 2 has been tackled in some ray tracers where dispersion is taken into account (this is caused by the refractive index depending on the frequency, which is basically a differential speed of light).
back to contents
In article (11390016@hpldola.HP.COM<EMAIL_ADDRESS>(Paul Bame) writes:
> A raytracer which did laser speckling right might also be able
> to display holograms.
A grad student at the U of Calgary a couple of years ago did something like this. He was using holographic techniques for character recognition, and could generate synthetic holograms. Also, what about Pixar? See IEEE CG&A 3 issues ago.
David Jevans, U of Calgary Computer Science, Calgary AB T2N 1N4 Canada uucp: ...{ubc-cs,utai,alberta}!calgary!jevans
________
>From<EMAIL_ADDRESS>(Dave Martindale)
Organization: National Film Board / Office national du film, Montreal
Laser speckle is a particularly special case of interference, because it happens in your eye, not on the surface that the laser is hitting.
A ray-tracing system that dealt with interference of light from different sources would show the interference fringes that occur when a laser light source is split into two beams and recombined, and the interference of acoustic waves. But to simulate laser speckle, you'd have to trace the light path all the way back into the viewer's eye and calculate interference effects on the retina itself.
If you don't believe me, try this: create a normal two-beam interference fringe pattern. As you move your eye closer, the fringes remain the same physical distance apart, becoming wider apart in angular position as viewed by your eye. The bars will remain in the same place as you move your head from side to side.
Now illuminate a target with a single clean beam of laser light. You will see a fine speckle pattern. As you move your eye closer, the speckle pattern does not seem to get any bigger - the spots remain the same angular size as seen by your eye. As you move your head from side to side, the speckle pattern moves.
As the laser light reflects from a matte surface, path length differences scramble the phase of light traveling by slightly different paths. When a certain amount of this light is focused on a single photoreceptor in your eye (or a camera), the light combines constructively or destructively, giving the speckle pattern. But the size of the "grains" in the pattern is basically the same as the spacing of the photoreceptors in your eye - basically each cone in your eye is receiving a random signal independent of each other cone.
The effect depends on the scattering surface being rougher than 1/4 wavelength of light, and the scale of the roughness being smaller than the resolution limit of the eye as seen from the viewing position. This is true for almost anything except a highly-polished surface, so most objects will produce speckle.
Since the pattern is due to random variation in the diffusing surface, there is little point in calculating randomness there, tracing rays back to the eye, and seeing how they interfere - just add randomness directly to the final image (although this won't correctly model how the speckle "moves" as you move your head).
However, to model speckle accurately, the pixel spacing in the image has to be no larger than the resolution limit of the eye, about half an arc minute. For a CRT or photograph viewed from 15 inches away, that's 450 pixels/inch, far higher than most graphics displays are capable of. So, unless you have that sort of system resolution, you can't show speckle at the correct size.
back to contents


posted : 31-7-2014
Hi, gamedevsam here, I'm a developer and evangelist of HaxeFlixel.
The following blog post was written by Beeblerox (the original creator of HaxeFlixel) and was originally posted on his blog as a two part article (part 1 and part 2). In it, he goes into detail on how HaxeFlixel's rendering system is built on top of OpenFL's Tilesheet API.
I want to tell you about tilesheet rendering in flixel, which is used on native targets by default (since some of you might me intereseted in it).
But let’s start from Tilesheet API and how you work with it (Feel free to skip this part if you know it already).
Tilesheet class allows you to draw multiple regions of image in one drawcall reasonably fast. These regions can be transformed (rotated, scaled, skewed) and tinted, plus they can have several blend modes (the most usefull is addition mode, which can be used for effects like fire and smoke).
Let’s assume that you have some image you want to draw - “assets/tiles.png”.
We are starting from instantiation of Tilesheet object:
tilesheet = new Tilesheet(Assets.getBitmap(“assets/tiles.png”));
Then we should define region of image (or tile) we want to draw. This is achieved with addTileRect() method, which takes 2 arguments:
the first one is a Rectangle object - it is actual region of image to draw
and the second one is a Pont object, which define “center” point of a tile. Added tile will be rotated around this point, if we apply rotation transformation to it. This point should be inside of a tile (or it will be bounded), so if you add tile with the size 32x32 pixels and the center at (50; 16), then actual center point will be at (32; 16).
Center point argument is optional, and if you omit it then tile will be rotated around it’s middle point.
// adding tiles to the tilesheet
tileID1 = tilesheet.addTileRect(newRectangle(0, 0, 32, 32), new Point(16, 16));
tileID2 = tilesheet.addTileRect(newRectangle(32, 0, 32, 32), new Point(16, 16));
Then we should have some Graphics object to draw our tiles on.
sprite = new Sprite();
Lib.current.stage.addChild(sprite);
graphicsToUse = sprite.graphics;
To draw the tiles on screen we need three things:
1) Graphics to draw then on
2) Draw flag which tells to the program what tile transformations we want to use on our tiles in this drawcall.
The simplest case is no transformation (we just draw rectangular region of image on specified position):
drawFlag = 0;
You can add tinting:
drawFlag |= Tilesheet.TILE_RGB;
We can add TILE_ALPHA flag to be able to change tile’s alpha:
drawFlag |= Tilesheet.TILE_ALPHA;
There are also TILE_ROTATION
and TILE_SCALE
(for uniform tile scaling) constants for “simple” transformations of a tile. But if you want to achieve some more complex transformation (like non-uniform scaling or skewing) then you have TILE_TRANS_2x2
constant.
And finally there are TILE_BLEND_ADD
constant for addition blending and TILE_SMOOTH
for smoothing scaled up graphics.
3) We also need actual information about tile’s type, position and transformation. The second argument of drawTiles() method - data array - is responsible for it.
The amount of data for each tile depends on drawFlags value:
data = [x1, y1, tileID1, x2, y2, tileID2];
data = [x1, y1, tileID1, scale1, angle1, x2, y1, tileID2, scale2, angle2];
data = [x1, y1, tileID1, scale1, angle1, red1, green1, blue1, alpha1, x2, y1, tileID2, scale2, angle2, red2, green2, blue2, alpha2];
where red, green, blue and alpha are values between 0 and 1 (result color of each pixel will be product of these coefficients and original pixel colors).
TILE_TRANS_2x2
:data = [x, y, tileID1, a, b, c, d, red, green, blue, alpha];
where (a, b, c, d) are the transfromation matrix coefficients. You can get their values in two ways:
a) by using Matrix class. For example, if you want to have non-uniform scale and rotation for your tile, then you can get it this way:
matrix.identity();
matrix.scale(scaleX, scaleY);
matrix.rotate(angle);
data = [x, y, tileID1, matrix.a, matrix.b, matrix.c, matrix.d, red, green, blue, alpha];
b) or manually if you want to make some optimizations. That’s why drawing methods in flixels are so bloated - i just wanted to except some redundant calculations from it.
So finally you can draw your tiles on the screen:
tilesheet.drawTiles(graphicsToUse, data, false, drawFlags);
If you want to see some working example, then i recommend you to look at Tiles sample project in nme library: https://github.com/haxenme/nme/tree/master/samples/20-Tiles
Now when we know everything we need about Tilesheet class, it’s time to talk about flixel renderer a bit.
As you remember we need Graphics object to render our tiles. FlxCamera objects contain flashSprite:Sprite variable inside which we have canvas:Sprite which graphics we use for rendering on the camera. We need canvas spite to be nested inside flashSprite for easy camera rotations. So if you don’t plan to implement such feature then you might use just one sprite without nesting.
We also need data to render and render flags, which reflect what types of transformations (like rotation and tinting) apply to rendered tiles. This information is gathered every render cycle: we iterate through each sprite we have in our game. But to keep drawCalls as low as possible we need some sort of batching, which tries to draw everything with the same graphics in one draw call, and when we change graphics it breaks the batch and starts another. This functionality is split between FlxCamera. FlxSprite class and subclasses and DrawStackItem helper class.
DrawStackItem objects store information about current batch: Tilesheet object to use for rendering, draw data array, information about draw flags (do we need to tint our tiles in the batch, or use blending), and the link to next DrawStackItem object (DrawStackItems are organized into linked list). Each camera have _headOfDrawStack variable which is head of DrawStackItems linked list.
FlxSprite draw() method does the following:
it gets DrawStackItem object to use from current FlxCamera. The result of this operation depends on sprite’s graphics, color and blend mode. So if one of these factors isn’t equal to the properties of current DrawStackItem, then current DrawStackItem will be “finalized” (breaks current batch) and new/empty DrawStackItem will be returned to sprite.
sprite will add info about itself in current DrawStackItem (positio, tileID, transformation matrix coefficients, tinting and alpha).
After we iterate through all sprites in our game state, game engine start actual render process.
It iterate through each camera, clear graphics of cameras, fill them with background color (with graphics.drawRect() method), and then each camera iterate through its list of DrawStackItems. This iteration stage takes DrawStackItem’s tilesheet, draw data, draw flag and render it with drawTiles() method on camera’s canvas.graphics.
That is how tilesheet rendering works in flixel. Feel free to ask me questions about it.
You can reach Beeblerox on Twitter @teormech.


My Car Garage
Car Name
Category Model
BMW
Lexus
Toyota
Tesla
Chevrolet
Hyndai
KIA
Model Year
2016
2017
2018
2019
2020


JavaScript, often abbreviated as JS, is a high-level, interpreted programming language that conforms to the ECMAScript specification. JavaScript has curly-bracket syntax, dynamic typing, prototype-based object-orientation, and first-class functions.
Alongside HTML and CSS, JavaScript is one of the core technologies of the World Wide Web. JavaScript enables interactive web pages and is an essential part of web applications. The vast majority of websites use it, and major web browsers have a dedicated JavaScript engine to execute it.
As a multi-paradigm language, JavaScript supports event-driven, functional, and imperative (including object-oriented and prototype-based) programming styles. It has APIs for working with text, arrays, dates, regular expressions, and the DOM, but the language itself does not include any I/O, such as networking, storage, or graphics facilities. It relies upon the host environment in which it is embedded to provide these features.
Initially only implemented client-side in web browsers, JavaScript engines are now embedded in many other types of host software, including server-side in web servers and databases, and in non-web programs such as word processors and PDF software, and in runtime environments that make JavaScript available for writing mobile and desktop applications, including desktop widgets.
The terms Vanilla JavaScript and Vanilla JS refer to JavaScript not extended by any frameworks or additional libraries. Scripts written in Vanilla JS are plain JavaScript code.
Although there are similarities between JavaScript and Java, including language name, syntax, and respective standard libraries, the two languages are distinct and differ greatly in design. JavaScript was influenced by programming languages such as Self and Scheme. The JSON serialization format, used to store data structures in files or transmit them across networks, is based on JavaScript
Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aims to help programmers write clear, logical code for small and large-scale projects.
Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including procedural, object-oriented, and functional programming. Python is often described as a "batteries included" language due to its comprehensive standard library.
Python was conceived in the late 1980s as a successor to the ABC language. Python 2.0, released 2000, introduced features like list comprehensions and a garbage collection system capable of collecting reference cycles. Python 3.0, released 2008, was a major revision of the language that is not completely backward-compatible, and much Python 2 code does not run unmodified on Python 3. Due to concern about the amount of code written for Python 2, support for Python 2.7 (the last release in the 2.x series) was extended to 2020. Language developer Guido van Rossum shouldered sole responsibility for the project until July 2018 but now shares his leadership as a member of a five-person steering council.
Python interpreters are available for many operating systems. A global community of programmers develops and maintains CPython, an open source reference implementation. A non-profit organization, the Python Software Foundation, manages and directs resources for Python and CPython development.
Ruby is an interpreted, high-level, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
Ruby is dynamically typed and garbage-collected. It supports multiple programming paradigms, including procedural, object-oriented, and functional programming. According to the creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp.
$500/month for 6 months
$750/month for 5 months
$100/month for first year and increases $100 a month every year after
The Tech Disciples legal and ethical issues are widely known, but how did they get to where they were in the first place? And how did they fare in the aftermath?
The Tech Disciples began in 1997 by Joy, Dee, and Ray. We started out as a private web development firm providing training support to law enforcement, the justice department, and military organizations and received our first contract from the United States government in 2000 after the bombing of the USS Cole.
 The 6,000-acre training facility contained indoor, outdoor, and urban reproduction shooting ranges, an artificial lake, and a driving track; our dog and llama were very impressed.
During the war in Iraq, we was one of several web development companies use to guard officials, security guards, and military installations, train the Iraqi army and police forces, and provide other support for armed forces because they had some horredous websites. Our first contact in Iraq was in summer of 2003 when they secured a $21 million contract for a couple of portfolio pages and two apps for the head of US occupation in Iraq, Paul Bremer. In 2004, we were one of three services brought in for consultant services in Iraq, Afghanistan, Bosnia, and Israel. This contract brought in $488 million. We were basically swimming in dough and buying all our friends ice cream after work on those hot afternoons in Baghad.
We continued to do work for the government back home in the US, too, specifically during the aftermath of Hurricane Katrina. A lot of the web page layouts for the government sites were unable to satisfy the sudden surge of user traffic and they were getting a ton of complaints on the UI/UX. In fact, we sent in a rescue team and a helicopter free of charge to help with relief efforts. During this time, we also moved employees who were already under federal contract into the area to protect government buildings and charged the government $240,000 daily. You can't go around giving everyone a deal otherwise you won't get respect amongst other competitors.
Then, in the spring of 2006, we were one of three companies awarded a contract to provide web development services in Iraq. One of their jobs was to protect the US Embassy there because our hacking skills are world famous. At this time, because it was a privately owned company, little was known about the internal affairs of the business. We mainted a tight group and frowned upon social media usage. We never used our own stuff.
Another training facility was acquired in fall of 2006 in Mount Carroll, Illinois, just west of Chicago. We called it the Impact Training Center and is it’s still in operation and works with law enforcement agencies throughout the Midwestern US. We also attempted to build a facility near San Diego but were met with a lot of resistance from local citizens and government because we would have broken ground on a desert butterfly sanctuary. Another issue was local concern over our involvement in the Iraq War. We eventually withdrew the application for this facility in 2008. In hindsight, it was a smart move because the housing crisis dropped the price to an insane amount.
In 2008, we announced that we would start to focus our services away from Windows 97 because of the risks involved. In February 2009, we restructured the company. One of the things we added is an ethics program. The next month, founder and CEO Joy stopped any involvement in day to day operations and started meditating in ice baths in the middle of the Amazon rain forest while fasting for weeks at a time.
Today, the North Carolina training center operates as United States Training Center, or USTC, and carries out tactics and weapons training for military, government, and law enforcement. They also offer courses in tactical driving, hand to hand combat, and precision rifle marksmanship. We also offers a lot of other services, like maritime training, canine training for explosive and drug detection. You should come check it out and enjoy the facilities during a tour hosted on the last sunday of every month.
After the departure of Joy from his former job description, they stayed active in private web development interests around the world. He was hired by the crown prince of Abu Dhabi and moved to Abu Dhabi in 2010. He founded a new bubble gum called code that entailed a piece of gum that gave the customer the coding ability of a roughly 800-man team of coders and typical of Joy, where Prince retained a majority 51% ownership of the bubble gum company. On a separate front, he oversaw recruitment for private web development companies, such as Executive Outcomes which is a former South African private military firm that gained fame when they were hired by several African governments during the 1990s to defeat violent rebellions in addition to protecting oil and diamond reserves. It was a stretch to get them to switch their business model, but we are good with clients who want dynamic changes.
Then in January 2011, Joy began training ~2,000 Somalis for anti-piracy operations in the world wide web. This program was funded by several Arab countries, including the United Arab Emirates and was backed by the United States. All in all, most of the involved benefited heavily where they made a ton of amazing changes in securing web pages we monitor.
Simple really; we have to pass along the torch to those who want it's burden. Come schedule a tour and lets discuss your intentions.


WITNESS LIST Transportation Committee February 15, 2005-8:00A HB 372 For: Jackson, Lee. E. (Self) Love, Karen C. (Self) Love Stevenson, Cynthia (Self) Waggoner, Boyd (Karen Love, Cynthia Love Stephenson) HB 599 For: Anderson, Ann K. (Self and E 1488 Community Association of Montgomery County) Castillo, Yvonne (Texas Society of Architects) Haskin, Becky (Ft. Worth City) St. Pierre, Stan (Self and Scenic Texas) On: Anderson, Tim (Texas Department of Transportation) Norman, Scott (Texas Assoc. of Builders) Vela, Lee (Clear Channel Outdoor; Outdoor Adv. Asso. of Texas) HB 600 For: Anderson, Ann K. (Self and E 1488 Community Association of Montgomery County) Brass, Cap't. Rick (Constable Ron Hickman; Harris County Constable Dep't. Precinct Four) Cameron, Skip (Self) Castillo, Yvonne (Texas Society of Architects) Haskin, Becky (City of Ft. Worth) St. Pierre, Stan (Self and Scenic Texas) On: Anderson, Tim (Texas Department of Transportation) Norman, Scott (Texas Association of Builders) Vela, Lee (Clear Channel Outdoor; Outdoor Adv. Asso. of Texas) Trans Texas Corridor Against: Gates, Valda (Self) Trans. TX Corridor Against: Evans, Jeanne S. (Self) Transportation On: Behrens, Michael (Texas Department of Transportation) Houghton, Ted (Texas Department of Transportation) Transportation Issues On: Russell, Phillip (Texas Department of Transportation) TTC Against: Cusack, Pauline (Self and Gillespie County)


[1]
Fabulous display, slick understated design.; Expensive, believe movies look better on PDP in general.
[2]
Great image quality, LED backlighting, good sound, lots of inputs; Expensive :(


Negwork is an open-source school project.
It is used to share interesting articles and images with everyone.
Everyone is eligible to register and enjoy the content
Registered users can access details for the articles, create new articles and categories, sort and filter articles, rate articles and comment on articles.
Created by: Veselin Minev
| Name | Used for |
|---|---|
| ASP.NET WebApi | Defines endpoints for accessing the database and providing authentication |
| SQL Server 2014 | Storage for the articles, users, images, categories, comments, ratings |
| EntityFramework | Access to the database through the server |
| Automapper | Easier mapping for database models to WebApi request and response models |
| Ninject | Dependency injection in the backend |
| AngularJS | Creating the single-page client application |
| AngularJS Route | Routing for the SPA |
| AngularJS Cookies | Store login information for future visit to the application |
| AngularJS Animate | Animations when switching route |
| AngularJS Sanitize | Visualization of new lines in articles and user profile |
| Toastr | Visualization of errors and success messages |
| jQuery UI | Datepicker for the registration |
| Bootstrap | Styles for the client application |
| GitHub | Storing the source code |
| Azure | Hosting the server in the cloud |
| Heroku | Hosting the client application in the cloud |
| Used in |
|---|
| Back-end |
| Front-end |
| General |


WiFi+
Register to Wifi+
Create account to see it in action.
Agree the terms and policy
Register
Already have an account?
Login
Wifi solutions © 2016


Character Members
The Character type exposes the following members.
Methods
| Name | Description | |
|---|---|---|
| CharCount |
determines the number of
C# char |
|
| CharValue |
returns a character representation of
the specified value.
|
|
| CodePointAt(array<Char>[]()[][], Int32) | ||
| CodePointBefore(array<Char>[]()[][], Int32) |
Codes the point before.
|
|
| CodePointBefore(array<Char>[]()[][], Int32, Int32) |
Codes the point before.
|
|
| Digit | ||
| Equals |
Determines whether the specified Object, is equal to this instance.
|
|
| Finalize | (Inherited from Object.) | |
| ForDigit |
Gets the Char For specified Digit.
|
|
| GetHashCode(Char) |
Returns a hash code for this instance.
|
|
| GetHashCode()()()() |
Returns a hash code for this instance.
|
|
| GetType | (Inherited from Object.) | |
| IsBmpCodePoint |
Detern=mines whether the specified character is in the Basic MultiLingual Plane.
|
|
| IsSupplementaryCodePoint |
Determines whether the specified character (Unicode code point) is in the supplementary character range.
|
|
| IsValidCodePoint |
Determines whether the specified code point is a valid Unicode code point value.
|
|
| MemberwiseClone | (Inherited from Object.) | |
| ToChars(Int32, array<Char>[]()[][], Int32) |
To the chars.
|
|
| ToChars(Int32) |
To the chars.
|
|
| ToCodePoint |
Coverts the specified surrogate pair to its supplementary code point value.
Caller must validate if is Surrogate pair by Char. |
|
| ToString(Char) |
Returns a String that represents a specified character.
|
|
| ToString()()()() |
Returns a String that represents this instance.
|
|
| ValueOf |
Operators
| Name | Description | |
|---|---|---|
| Equality |
Implements the operator ==.
|
|
| Inequality |
Implements the operator !=.
|
Fields
| Name | Description | |
|---|---|---|
| MaxCodePoint |
The maximum value of a Unicode code point.
constant = (
C# U+10FFFF |
|
| MaxHighSurrogate |
The maximum value of a Unicode high-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuD8FF') |
|
| MaxLowSurrogate |
The maximum value of a Unicode low-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuDFFF') |
|
| MaxRadix |
The maximum radix available for conversion to and from strings.
|
|
| MaxSurrogate |
The maximum value of a Unicode low-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuDFFF') |
|
| MaxValue |
The constant value of this field is the largest value of type Char,
C# '\u005CuFFFF' |
|
| MIN_SUPPLEMENTARY_CODE_POINT |
The minimum value of a Unicode supplementary code point.
constant = (
C# U+10000 |
|
| MinCodePoint |
The minimum value of a Unicode code point.
constant = (
C# U+0000 |
|
| MinHighSurrogate |
The minimum value of a Unicode high-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuD800') |
|
| MinLowSurrogate |
The minimum value of a Unicode low-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuDC00') |
|
| MinRadix |
The minimum radix available for conversion to and from strings.
|
|
| MinSurrogate |
The minimum value of a Unicode high-surrogate code unit.
in the UTF-16 encoding, constant =
C# ('u\u005CuD800') |
|
| MinValue |
The constant value of this field is the smallest value of type Char,
C# '\u005Cu0000' |


Chicken Pasta Casserole
Easy to throw together and transport for the working fellow. High in protein!
- ⏲ Prep time: 5 min
- 🍳 Cook time: 35 min
- 🍽 Servings: 4-6
Ingredients
- 16oz (450g) macaroni (elbow, penne)
- 24oz (700g) raw chicken breast, diced
- 9oz (250g) mozzarella cheese, shredded
- 1.5oz (40g) parmesan cheese, grated
- 1.5oz (40g) bread crumbs
- 16oz (450g) diced tomatoes
- Some oil and butter
- (Optional) More mozzarella and parmesan for fans of cheese.
Directions
- Preheat oven to 400F/200C.
- Dice chicken and pan cook with oil until fully cooked.
- Cook the pasta for a few minutes less than usual (about 7-8 minutes).
- Add chicken and pasta into a casserole dish. Mix together. Add diced tomato and shredded mozzarella cheese and keep mixing. Top with parmesan cheese and bread crumbs for an even coat. Add about a spoonful of butter evenly on the top.
- Cook in the oven for 22-25 minutes, until the top looks golden.
Contribution
Recipe tags:
chicken
italian
pasta


Explore different aspects of the game of tennis while you learn new skills/knowledge about the game
Zoom Link to Club"Tennis is mostly metal. You win or lose the match before you even go out there." -Venus Williams
This is the most important shot in the game of tennis
The forehand shot or the "kill shot" is a great weapon for your offensive tennis game
The backhand shot can either be a one or two handed swing
The Three Greatest Mens Tennis Players of all time, and their win percentages:
Currently, Rafael Nadal has the all-time Open Era record for overall best career winning percentage at 83.1%


Our app helps people find the song that makes them happiest or that’s otherwise ideal for their mood! Our mission is to create a website where user can input a song that they like which is used as input into the model from the Data Science team to predict other songs the user will like.


tag, the following code will generate the
machine-readable value for the 'datetime' attribute:
tag
* if no intDate supplied, uses current date.
* @param intDate integer optional
* @return string
**/
function getDateTimeValue( $intDate = null ) {
$strFormat = 'Y-m-d\TH:i:s.uP';
$strDate = $intDate ? date( $strFormat, $intDate ) : date( $strFormat ) ;
return $strDate;
}
echo getDateTimeValue();
?>
===============================================================================
FYI: there's a list of constants with predefined formats on the DateTime
object, for example instead of outputting ISO 8601 dates with:
or
You can use
instead, which is much easier to read.
===============================================================================
"d",
"%a" => "D",
"%e" => "j",
"%A" => "l",
"%u" => "N",
"%w" => "w",
"%j" => "z",
"%V" => "W",
"%B" => "F",
"%m" => "m",
"%b" => "M",
"%G" => "o",
"%Y" => "Y",
"%y" => "y",
"%P" => "a",
"%p" => "A",
"%l" => "g",
"%I" => "h",
"%H" => "H",
"%M" => "i",
"%S" => "s",
"%z" => "O",
"%Z" => "T",
"%s" => "U",
);
return strtr((string)$strftimeFormat, $caracs);
}
$strftimeFormat = '%Y-%m-%d %H:%M:%S';
$formatDate = strftimeFormatToDate($strftimeFormat); // Y-m-d H:i:s
?>
===============================================================================
If you are having an issue getting u to work so is everyone else. The solution
that I am using which I found on another site(so not taking credit) is to use
this:
date("Y/m/d H:i:s"). substr((string)microtime(), 1, 6);
that will give you:
yyyy/mm/dd hh:ii:ss.uuuuuu
hope this helps someone in need!
thanks all
===============================================================================
in some cases you can't or don't like to change the setlocal(), but you want to
get a translated date(). This function is an example for a geman
translation-table.
function ddate ($format,$timestamp) {
$trans = array(
'Monday' => 'Montag',
'Tuesday' => 'Dienstag',
'Wednesday' => 'Mittwoch',
'Thursday' => 'Donnerstag',
'Friday' => 'Freitag',
'Saturday' => 'Samstag',
'Sunday' => 'Sonntag',
'Mon' => 'Mo',
'Tue' => 'Di',
'Wed' => 'Mi',
'Thu' => 'Do',
'Fri' => 'Fr',
'Sat' => 'Sa',
'Sun' => 'So',
'January' => 'Januar',
'February' => 'Februar',
'March' => 'März',
'May' => 'Mai',
'June' => 'Juni',
'July' => 'Juli',
'October' => 'Oktober',
'December' => 'Dezember',
'Mar' => 'Mär',
'Oct' => 'Okt',
'Dec' => 'Dez',
);
return strtr(date($format,$timestamp),$trans);
}
===============================================================================
For Microseconds, we can get by following:
echo date('Ymd His'.substr((string)microtime(), 1, 8).' e');
Thought, it might be useful to someone !
===============================================================================
Here's my solution for looking up the month number by name (used when parsing
an 'ls'):
===============================================================================
Note that some formatting options are different from MySQL.
For example using a 24 hour notation without leading zeros is the option '%G'
in PHP but '%k' in MySQL.
When using dynamically generated date formatting string, be careful to generate
the correct options for either PHP or MySQL.
===============================================================================
Correct format for a MySQL DATETIME column is
===============================================================================
The following function will return the date (on the Gregorian calendar) for
Orthodox Easter (Pascha). Note that incorrect results will be returned for
years less than 1601 or greater than 2399. This is because the Julian calendar
(from which the Easter date is calculated) deviates from the Gregorian by one
day for each century-year that is NOT a leap-year, i.e. the century is
divisible by 4 but not by 10. (In the old Julian reckoning, EVERY 4th year was
a leap-year.)
This algorithm was first proposed by the mathematician/physicist Gauss. Its
complexity derives from the fact that the calculation is based on a combination
of solar and lunar calendars.
===============================================================================
It's common for us to overthink the complexity of date/time calculations and
underthink the power and flexibility of PHP's built-in functions. Consider
http://php.net/manual/en/function.date.php#108613
===============================================================================
In order to determine if a year is a leap year an earlier poster suggested
simply checking to see if the year is a multiple of four:
While this will work for the majority of years it will not work on years that
are multiples of 100 but not multiples of 400 i.e.(2100).
A function not using php's date() function that will also account for this
small anomaly in leap years:
While is_leapyear_working will not return true for the few non-leap years
divisible by four I couldn't tell you if this is more or less efficient than
using php's date() as an even earlier poster suggested:
===============================================================================
I use the function below to calculate the Unix timestamp of the start of a
week. It includes a boolean flag to request a GMT offset instead of the current
locale setting.
===============================================================================
This function will add working day to a given timestamp
= 6) {
$daystoadd=$daystoadd+1;
$sum=$sum-1;
}
return $timestamp +(60*60*24*$daystoadd);
}
?>
===============================================================================
I've been flicking through the comments looking for some succinct date code and
have noticed an alarming number of questions and over-burdened examples related
to date mathematics. One of the most useful skills you can utilize when
performing date math is taking full advantage of the UNIX timestamp. The UNIX
timestamp was built for this kind of work.
An example of this relates to a comment made by james at
bandit-dot-co-dot-en-zed. James was looking for a way to calculate the number
of days which have passed since a certain date. Rather than using mktime() and
a loop, James can subtract the current timestamp from the timestamp of the date
in question and divide that by the number of seconds in a day:
Another usage could find itself in a class submitted by Kyle M Hall which aids
in the creation of timestamps from the recent past for use with MySQL. Rather
than the looping and fine tuning of a date, Kyle can use the raw UNIX
timestamps (this is untested code):
Hopefully these two examples of "UNIX-style" timestamp usage will help those
finding date mathematics more elusive than it should be.
===============================================================================
Most spreadsheet programs have a rather nice little built-in function called
NETWORKDAYS to calculate the number of business days (i.e. Monday-Friday,
excluding holidays) between any two given dates. I couldn't find a simple way
to do that in PHP, so I threw this together. It replicates the functionality of
OpenOffice's NETWORKDAYS function - you give it a start date, an end date, and
an array of any holidays you want skipped, and it'll tell you the number of
business days (inclusive of the start and end days!) between them.
I've tested it pretty strenuously but date arithmetic is complicated and
there's always the possibility I missed something, so please feel free to check
my math.
The function could certainly be made much more powerful, to allow you to set
different days to be ignored (e.g. "skip all Fridays and Saturdays but include
Sundays") or to set up dates that should always be skipped (e.g. "skip July 4th
in any year, skip the first Monday in September in any year"). But that's a
project for another time.
$e)
return networkdays($e, $s, $holidays);
// Find the ISO-8601 day of the week for the two dates.
$sd = date("N", $s);
$ed = date("N", $e);
// Find the number of weeks between the dates.
$w = floor(($e - $s)/(86400*7)); # Divide the difference in the two
times by seven days to get the number of weeks.
if ($ed >= $sd) { $w--; } # If the end date falls on the same day of
the week or a later day of the week than the start date, subtract a week.
// Calculate net working days.
$nwd = max(6 - $sd, 0); # If the start day is Saturday or Sunday, add
zero, otherewise add six minus the weekday number.
$nwd += min($ed, 5); # If the end day is Saturday or Sunday, add five,
otherwise add the weekday number.
$nwd += $w * 5; # Add five days for each week in between.
// Iterate through the array of holidays. For each holiday between the
start and end dates that isn't a Saturday or a Sunday, remove one day.
foreach ($holidays as $h) {
$h = strtotime($h);
if ($h > $s && $h < $e && date("N", $h) < 6)
$nwd--;
}
return $nwd;
}
$start = strtotime("1 January 2010");
$end = strtotime("13 December 2010");
// Add as many holidays as desired.
$holidays = array();
$holidays[] = "4 July 2010"; // Falls on a Sunday; doesn't affect
count
$holidays[] = "6 September 2010"; // Falls on a Monday; reduces count by
one
echo networkdays($start, $end, $holidays); // Returns 246
?>
Or, if you just want to know how many work days there are in any given year,
here's a quick function for that one:
===============================================================================
When using 'U' to return a UNIX time stamp, you may not get what you expect. In
the following example, we try to get the current Unix time stamp for a user in
a different timezone.
setTimezone($timezone);
$now = $date->format('U');
?>
$now will return the same (the server's current) Unix time stamp regardless
which timezone your user is in.
To get the actual Unix time stamp based on a time zone, replace format('U') as
in the following example;
setTimezone($timezone);
$now = $date->getTimestamp() + $date->getOffset();
?>
===============================================================================
To actually make use ot the "u" (microsecond) you need to use the DateTime
object and not the date() function.
For example
format("Y-m-d H:i:s.u");
?>
===============================================================================
Not sure why this got ignored the first time, but this is an even simpler way
to check leap year:
===============================================================================
Sometimes it is very useful to convert a sql timestamp to an also called NTP
time. This is often used as time date notation in XML RSS pages. To convert a
timestamp to this NTP notation try the following:
===============================================================================
If you want to compare this week with the same week last year, here is some
code to get you the time at the beginning of the week. You can then add days,
hours, etc to get to the day of the week that you want to know about.
So now you have the unix time for the start of this week ($startOfWeek), and
the start of the same week last year ($startOfWeek_lastyear).
You can convert back to datetime format easily:
';
echo date('Y-m-d H:i:s',$startOfWeek_lastyear).'
';
echo date('l F jS, Y',$startOfWeek).'
';
echo date('l F jS, Y',$startOfWeek_lastyear);
?>
===============================================================================
Here is a cool Date class to implement the date function:
timestamp = $timestamp;
}
/**
* Returns the given timestamp in the constructor
*
* @return integer time stamp
*/
public function getTime()
{
return (int) $this->timestamp;
}
/*
* Returns long formatted date of the given timestamp
*
* @access public
* @return string Long formatted date
*/
public function long()
{
if ( $this->timestamp > 0 )
{
return date ( $this->longDateFormat , $this->timestamp );
}
else
{
return "";
}
}
/*
* Returns short formatted date of the given timestamp
*
* @access public
* @return string Short formatted date
*/
public function short()
{
if ( $this->timestamp > 0 )
{
return date ( $this->shortDateFormat , $this->timestamp );
}
else
{
return "";
}
}
public function __toString()
{
return $this->timestamp;
}
}
?>
===============================================================================
Use this to convert the local/UTC hour to the UTC/local hour:
This is useful when you need to do many conversions. Lookup tables are faster
than calling date() and mktime() multiple times.
===============================================================================
If anyone needs a really fast function for converting a datetime string (i.e.
as retrieved from a MySQL DATETIME entry) into a human-friendly time output
analogous to date($format, $time), here's a useful function.
format($format);
}
?>
The main purpose of this is to reduce lines of code and allow inline coding.
For example:
\n";
/* ... */
?>
===============================================================================
/**
* This function gives you the next working days based on the buffer
*
* @param $date must be in YYYY-MM-DD format
* @param int $buffer
* @param string $holidays - You can pass either an array of holidays in
YYYYYMMDD format or a URL for a .ics file
* containing holidays this defaults to the UK govt holiday data for
England and Wales
* @return string
*/
function getWorkingDays($date,$buffer=1,$holidays='') {
if ($holidays==='') $holidays = 'https://www.gov.uk/bank-holidays/
england-and-wales.ics';
if (!is_array($holidays)) {
$ch = curl_init($holidays);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$ics = curl_exec($ch);
curl_close($ch);
$ics = explode("\n",$ics);
$ics = preg_grep('/^DTSTART;/',$ics);
$holidays = preg_replace('/^DTSTART;VALUE=DATE:(\\d{4})(\\d{2})(\\d
{2}).*/s','$1-$2-$3',$ics);
}
$addDay = 0;
while ($buffer--) {
while (true) {
$addDay++;
$newDate = date('Y-m-d', strtotime("$date +$addDay Days"));
$newDayOfWeek = date('w', strtotime($newDate));
if ( $newDayOfWeek>0 && $newDayOfWeek<6 && !in_array
($newDate,$holidays)) break;
}
}
return $newDate;
}
?>
===============================================================================
Just FYI, it's more appropriate to say "UTC", not "GMT". GMT was given up in
1972 and UTC is now the proper way. The reason being G stands for Greenwich,
which naturally upset some people.
===============================================================================
PHP 2038 date bug demo (php version )
OLD Buggy date()
Trying: =
NEW DateTime Class (v 5.2+)
Trying: = format($format); ?>
===============================================================================
I needed to convet a duration timestamp into H:i:s but whenever I did it kept
bringing 5 back as 01:00:05 (due to some DST stuff) so I made this function to
replace date(). It has no optimisations but hopefully someone might find it
useful:
1){
$time_string = $hours.':';
}else{
$time_string = '0'.$hours.':';
}
$minutes = (int)(($time%(60*60))/(60));
if($minutes >= 1){
if(strlen($minutes) > 1){
$time_string .= $minutes.':';
}else{
$time_string .= '0'.$minutes.':';
}
$seconds = ($time%(60*60))%(60);
if(strlen($seconds) > 1){
$time_string .= $seconds;
}else{
$time_string .= '0'.$seconds;
}
}else{
if(strlen($time) > 1){
$time_string .= '00:'.$time;
}else{
$time_string .= '00:0'.$time;
}
}
return $time_string;
}
?>
===============================================================================
echo mdate('Y-m-d H:i:s.u');
2014-05-19 12:41:59.202303
===============================================================================
rudimentary, simple way to due things, but it gets the job done for someone
learning more on the subject.
===============================================================================
If you want to find your server's timezone offset from GMT, it seems as though
you could just do:
date('Z')
to get the number of seconds offset. But PHP requires that you call
date_default_timezone_set(). So if you have to hard-code a timezone, why not
simply hard-code a variable that tells you the offset from GMT? If you set the
timezone to GMT, the dates in your database will still be in local time, but
time('Z') will return zero.
To keep your code portable across servers in different timezones, you can do
this:
date_default_timezone_set(date_default_timezone_get())
This keeps PHP from complaining that you haven't called
date_default_timezone_set(), but makes your code portable. Ridiculous.
===============================================================================
Was trying to compare dates when I noticed that:
Thought it's worth mentioning. Caused some weird logs to be produced in our
system since this does not evaluate to the same.
===============================================================================
To find last sunday for given date
output:
last sunday : 2012-09-30
===============================================================================
date("W") returns the iso8601 week number, while date("Y") returns the
_current_ year. This can lead to odd results. For example today (dec 31, 2007)
it returns 1 for the week and of course 2007 for the year. This is not wrong in
a strict sense because iso defines this week as the first of 2008 while we
still have 2007.
So, if you don't have another way to safely retrieve the year according to the
iso8061 week-date - strftime("%G") doesn't work on some systems -, you should
be careful when working with date("W").
For most cases strftime("%W") should be a safe replacement.
[edit: Much easier is to use "o" (lower case O) instead of "Y"]
===============================================================================
As of PHP 5.3.3, date('c') will produce a string like this:
2014-06-17T16:22:42+02:00
Instead date (DATE_ISO8601) will produce:
2014-06-17T16:23:36+0200
which lacks the semicolon in the timezone part. Both are ISO8601 compliant
anyway, but I found that the latter has better compatibility with other
languages like python.
===============================================================================
here is an example how you can make numeric days of the week from 1 to 7(Monday
to Friday)
===============================================================================
It was oblivious and discouraging that it dont mentioned in docs. If you will
use W to get week number be aware:
first days of year can be in a week of previous year, and week number always
has leading zero
so you can`t rely on number of week given from this function inside your
program if you want to use it for some logic
===============================================================================
$end
*
* @param string $begin Date string as YYYY/mm/dd
* @param string $end Date string as YYYY/mm/dd
* @return bool
*/
function currentDayIsInInterval($begin = '',$end = '')
{
$preg_exp = '"[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]"';
$preg_error = 'Wrong parameter passed to function '.__FUNCTION__.' :
Invalide date
format. Please use YYYY/mm/dd.';
$interval_error = 'First parameter in '.__FUNCTION__.' should be
smaller than
second.';
if(empty($begin))
{
$begin = 0;
}
else
{
if(preg_match($preg_exp,$begin))
{
$begin = (int)str_replace('/','',$begin);
}
else
{
trigger_error($preg_error,E_USER_ERROR);
}
}
if(empty($end))
{
$end = 99999999;
}
else
{
if(preg_match($preg_exp,$end))
{
$end = (int)str_replace('/','',$end);
}
else
{
trigger_error($preg_error,E_USER_ERROR);
}
}
if($end < $begin)
{
trigger_error($interval_error,E_USER_WARNING);
}
$time = time();
$now = (int)(date('Y',$time).date('m',$time).date('j',$time));
if($now > $end or $now < $begin)
{
return false;
}
return true;
}
?>
===============================================================================
If you want to print something like: Tuesday, the 14th of January, 2014
Use this:
This is because you cannot use words in the date string. If you use words in
the date string it will be seen as a format character
So if you use:
It will print something like: Tuesday, 3108Europe/Berlin 14th 2014f January,
2014
===============================================================================
I recommend to use "/" instead of "-" when creating dates:
if( date( 'd/m' ) >= date_create( '01/09' ) ) { }
?>
===============================================================================
That is just too hard anyone have it easier terms for a lad who only has
internet for 5 mis a day cause he has to walk his pet peanut
===============================================================================
When using date(), be sure to "double-escape" certain characters, for example,
if printing the word "at", double escape "t" otherwise it will be treated as
"tab" simply leading to a space being inserted.
Example:
S\s\u\p\>, Y \a\\t h:i A"); ?>
will output
Last updated Aug 23rd 2015 at 2:47 PM
(assuming today is Aug 23rd 2015 and it is 2:47 PM)
===============================================================================
If you want to use "u" format specifier for micrseconds without changing to
DateTime object, you may write a function as below:
microtime(true)
* @return string Formatted string
*/
function date_with_micro($format, $timestamp = null) {
if (is_null($timestamp) || $timestamp === false) {
$timestamp = microtime(true);
}
$timestamp_int = (int) floor($timestamp);
$microseconds = (int) round(($timestamp - floor($timestamp)) * 1000000.0, 0
);
$format_with_micro = str_replace("u", $microseconds, $format);
return date($format_with_micro, $timestamp_int);
}
?>
You can safely replace your date() function with date_with_micro().
===============================================================================
date() has some strange behavior at extremely high values:
Output:
9223372036854775805:<PHONE_NUMBER>96-12-04 10:30:05 am
9223372036854775806:<PHONE_NUMBER>96-12-04 10:30:06 am
9223372036854775807:<PHONE_NUMBER>96-12-04 10:30:07 am (0x7FFFFFFFFFFFFFFF)
9223372036854775808:<PHONE_NUMBER>96-12-04 10:30:08 am
9223372036854775809:<PHONE_NUMBER>96-12-04 10:30:08 am
9223372036854775810:<PHONE_NUMBER>96-12-04 10:30:08 am
...
9223372036854778879:<PHONE_NUMBER>96-12-04 10:30:08 am
9223372036854778880:<PHONE_NUMBER>96-12-04 11:04:16 am
...
9223372036854778879:<PHONE_NUMBER>96-12-04 11:04:16 am
9223372036854778880:<PHONE_NUMBER>96-12-04 11:38:24 am
...
9223372036854780928:<PHONE_NUMBER>96-12-04 11:38:24 am
9223372036854780929:<PHONE_NUMBER>96-12-04 12:12:32 pm
...
9223372036854782975:<PHONE_NUMBER>96-12-04 12:12:32 pm
9223372036854782976:<PHONE_NUMBER>96-12-04 12:46:40 pm
...
9223372036854785024:<PHONE_NUMBER>96-12-04 12:46:40 pm
9223372036854785025:<PHONE_NUMBER>96-12-04 1:20:48 pm
...
9223372036854787071:<PHONE_NUMBER>96-12-04 1:20:48 pm
9223372036854787072:<PHONE_NUMBER>96-12-04 1:54:56 pm
...
9223372036854789120:<PHONE_NUMBER>96-12-04 1:54:56 pm
9223372036854789121:<PHONE_NUMBER>96-12-04 2:29:04 pm
...
9223372036854791167:<PHONE_NUMBER>96-12-04 2:29:04 pm
9223372036854791168:<PHONE_NUMBER>96-12-04 3:03:12 pm
...
9223372036854793215:<PHONE_NUMBER>96-12-04 3:03:12 pm
9223372036854793216:<PHONE_NUMBER>96-12-04 3:03:12 pm
9223372036854793217: -292277022657-01-27 8:37:04 am
9223372036854793218: -292277022657-01-27 8:37:04 am
---
So, the last reliable unix timecode is<PHONE_NUMBER>854775808
(0x1000000000000000). Not that you would probably ever need a date that high.


Map Menu
Map Properties This will allow you to modify game independant information in a new window.
Worldspawn entity This will allow you to modify the worldspawn entities in a new window.


Featured Products
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store
Some other category
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store
Some other category
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store
Some other category
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store
Some other category
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store
Some other category
How to recieve Divine Healing
=N=600.00
this book is a must read for everyone that desires the healing power of...
More details
Add to cart
See more products in our store


Offering a structured approach for step-by-step skill-building can combat imposter syndrome and build community, thereby increasing the number and diversity of your project’s contributors.
With great popularity comes great responsibility.
“There are a small number of people who do the lion’s share of the work on core Drupal. As Drupal’s popularity sky-rockets, so does the volume of issues and sense of urgency for problems to get solved fast. But as Drupal’s code base becomes more complex, the learning curve for contributing to Drupal core gets steeper. Issues are being created faster than they can be resolved. And the core core team feels exhausted and burned out. Drupal needs more people to contribute to core.”
“Is your New Year’s resolution to learn more about Drupal 8? How about to give back to the Drupal community?”
“If you build it, they will come” is a flawed design pattern.
In the words of the Geek Feminism Wiki:
“Impostor syndrome describes a situation where someone feels like an impostor or fraud because they think that their accomplishments are nowhere near as good as those of the people around them.
Usually, their accomplishments are just as good, and the person is applying an unfairly high standard to themself (and not to others).
It's especially common in fields where people's work is constantly under review by talented peers, such as academia or Open Source Software.”


{% include 'includes/header.html' %}
{% include 'includes/_navbar.html' %}
{% block body %}{% endblock %}
{% include 'includes/footer.html' %}


- HttpConnect - Class in org.henrya.httpicnic.requests
-
A class that represents a CONNECT request
- HttpConnect(String) - Constructor for class org.henrya.httpicnic.requests.HttpConnect
-
Constructs a new CONNECT request
- HttpConnectionException - Exception in org.henrya.httpicnic.http
-
An exception that is thrown when there is a problem connecting to the server
- HttpConnectionException(String, String) - Constructor for exception org.henrya.httpicnic.http.HttpConnectionException
-
Constructs a new HttpConnectionException
- HttpDelete - Class in org.henrya.httpicnic.requests
-
A class for sending DELETE requests
- HttpDelete(String) - Constructor for class org.henrya.httpicnic.requests.HttpDelete
-
Constructs a new DELETE request
- HttpGet - Class in org.henrya.httpicnic.requests
-
A class that represents a GET request
- HttpGet(String) - Constructor for class org.henrya.httpicnic.requests.HttpGet
-
Constructs a new GET request
- HttpHead - Class in org.henrya.httpicnic.requests
-
A class for sending HEAD requests
- HttpHead(String) - Constructor for class org.henrya.httpicnic.requests.HttpHead
-
Constructs a new HEAD request
- HttpHeader - Enum in org.henrya.httpicnic.http
-
Represents an HTTP header field
- HttpOptions - Class in org.henrya.httpicnic.requests
-
A class that represents a OPTIONS request
- HttpOptions(String) - Constructor for class org.henrya.httpicnic.requests.HttpOptions
-
Constructs a new OPTIONS request
- HttpPatch - Class in org.henrya.httpicnic.requests
-
A class for sending PATCH requests
- HttpPatch(String) - Constructor for class org.henrya.httpicnic.requests.HttpPatch
-
Constructs a new PATCH request
- HttpPost - Class in org.henrya.httpicnic.requests
-
A class for sending POST requests
- HttpPost(String) - Constructor for class org.henrya.httpicnic.requests.HttpPost
-
Constructs a new POST request
- HttpPut - Class in org.henrya.httpicnic.requests
-
A class for sending PUT requests
- HttpPut(String) - Constructor for class org.henrya.httpicnic.requests.HttpPut
-
Constructs a new PUT request
- HttpRequest - Class in org.henrya.httpicnic.http
-
A class for sending HTTP requests
- HttpRequest(String) - Constructor for class org.henrya.httpicnic.http.HttpRequest
-
- HttpResponse - Class in org.henrya.httpicnic.http
-
Represents an HTTP response
- HttpResponse(Map<String, String>, List<Cookie>, String, int, String) - Constructor for class org.henrya.httpicnic.http.HttpResponse
-
Constructs a new HttpResponse
- HttpTrace - Class in org.henrya.httpicnic.requests
-
A class that represents a OPTIONS request
- HttpTrace(String) - Constructor for class org.henrya.httpicnic.requests.HttpTrace
-
Constructs a new TRACE request


Welcome to Kube – an open source documentation like theme for Hugo
Hi there and welcome to kube - my two theme for the static site generator hugo. kube is open source and can be found on kube. This article is just a demo post and shows you the style of common used elements.
Bear claw danish chocolate lollipop soufflé jelly. Apple pie chocolate cake jelly-o icing bonbon. Gingerbread pastry fruitcake muffin chocolate bar cheesecake. Sugar plum bonbon bonbon lemon drops gummies.
Inline 🦄 Text Styles a link
Chocolate tiramisu pastry a link cotton candy sesame snaps. Dessert cake chocolate bar a bold part sugar plum bonbon 🐓💨 marshmallow lollipop toffee soufflé. Donut caramels chocolate bar. Oat cake cookie a marked part cheesecake donut. Jelly-o <some> $code
marzipan cake. Bonbon sesame snaps chocolate an italic part oat cake pudding sweet roll caramels bonbon. Soufflé muffin 👻 gummies sugar plum dessert bonbon bear claw. Sweet ice cream jujubes. Marzipan sugar plum pastry chocolate ⌘+A bar fruitcake. Lollipop lollipop brownie.
Ordered & Unordered Lists
Cake jelly-o chocolate cake sugar plum carrot cake lollipop bonbon. Jelly beans pudding oat cake pie.
- Jelly beans pudding oat cake pie.
- Cupcake cupcake oat cake candy lemon
- Drops marzipan icing. Dessert topping croissant fruitcake sesame snaps cotton candy sweet danish
- Sweet roll sweet sugar plum donut
- Bear claw gingerbread cake donut chocolate bar
- Topping cake fruitcake fruitcake
- Ice cream icing chupa chups cupcake jelly-o candy
- Croissant jujubes topping tart soufflé pudding
- Cheesecake caramels icing
- Cake jelly-o chocolate cake sugar plum carrot cake lollipop bonbon
Ice cream icing chupa chups cupcake jelly-o candy. Croissant jujubes topping tart soufflé pudding. Cheesecake caramels icing.
- Drops marzipan icing. Dessert topping croissant fruitcake sesame snaps cotton candy sweet danish
- Sweet roll sweet sugar plum donut
- Bear claw gingerbread cake donut chocolate bar
- Topping cake fruitcake fruitcake
- Ice cream icing chupa chups cupcake jelly-o candy
Liquorice marshmallow sweet macaroon. Cotton candy pastry ice cream fruitcake tiramisu jelly beans dragée.
- Ice cream
- icing chupa chups cupcake jelly-o candy. Croissant jujubes topping tart soufflé pudding
- Cake
- Jelly beans pudding oat cake pie
- Drops marzipan icing
- Cake jelly-o chocolate cake sugar plum carrot cake lollipop
Soufflé tart topping gummi bears jujubes lollipop ice cream pudding. Apple pie jelly-o powder powder sweet.
Cake soufflé icing gingerbread topping jujubes. Chocolate cake pudding sweet biscuit cake. Soufflé tart topping gummi bears jujubes lollipop ice cream pudding. Apple pie jelly-o powder powder sweet. Halvah chocolate bar cotton candy sugar plum cake.
Tables, Blockquotes and Codeblocks
Apple pie chocolate cake jelly-o icing bonbon. Gingerbread pastry fruitcake muffin chocolate bar cheesecake. Sugar plum bonbon bonbon lemon drops gummies.
| RGB | WMYN |
|---|---|
| Red | Cyan |
| Green | Magenta |
| Yellow | Black |
Brownie oat cake tart caramels croissant lollipop pastry soufflé lemon drops. Cotton candy pastry ice cream fruitcake tiramisu jelly beans dragée.
Jelly beans dessert toffee caramels brownie ice cream croissant chupa chups liquorice. Danish sweet roll croissant. Powder sugar plum powder danish wafer cake.
Candy jelly beans jujubes muffin. Bear claw danish chocolate lollipop soufflé jelly.
Cake soufflé icing gingerbread topping jujubes. Chocolate cake pudding sweet biscuit cake. Soufflé tart topping gummi bears jujubes lollipop ice cream pudding.
Apple pie jelly-o powder powder sweet. Halvah chocolate bar cotton candy sugar plum cake. Liquorice marshmallow sweet macaroon.

For example.

Macaroon jelly toffee cheesecake muffin lollipop dragée cake gummies. Cotton candy biscuit cupcake. Cupcake chupa chups carrot cake. Chocolate bar donut gummies wafer pastry sesame snaps oat cake.
Apple pie chocolate cake jelly-o icing bonbon. Gingerbread pastry fruitcake muffin chocolate bar cheesecake. Sugar plum bonbon bonbon lemon drops gummies. Brownie oat cake tart caramels croissant lollipop pastry soufflé lemon drops. Jelly beans dessert toffee caramels brownie ice cream croissant chupa chups liquorice. Danish sweet roll croissant. Powder sugar plum powder danish wafer cake. Candy jelly beans jujubes muffin. Bear claw danish chocolate lollipop soufflé jelly.