Shared posts

04 Dec 20:37

Continuous-wave infrared optical gain and amplified spontaneous emission at ultralow threshold by colloidal HgTe quantum dots

by Pieter Geiregat

Continuous-wave infrared optical gain and amplified spontaneous emission at ultralow threshold by colloidal HgTe quantum dots

Nature Materials, Published online: 9 October 2017; doi:10.1038/nmat5000

Stimulated emission under continuous-wave excitation from mercury telluride quantum dots at very low thresholds (compatible with electrical injection) is achieved by exploiting surface traps that render the quantum dots into four-level systems.

10 Oct 10:57

10/04/17 PHD comic: 'Signs you're ready to graduate'

Piled Higher & Deeper by Jorge Cham
www.phdcomics.com
Click on the title below to read the comic
title: "Signs you're ready to graduate" - originally published 10/4/2017

For the latest news in PHD Comics, CLICK HERE!

08 Oct 19:55

Local Pore Size Correlations Determine Flow Distributions in Porous Media

by Karen Alim, Shima Parsa, David A. Weitz, and Michael P. Brenner

Author(s): Karen Alim, Shima Parsa, David A. Weitz, and Michael P. Brenner

The relationship between the microstructure of a porous medium and the observed flow distribution is still a puzzle. We resolve it with an analytical model, where the local correlations between adjacent pores, which determine the distribution of flows propagated from one pore downstream, predict the...


[Phys. Rev. Lett. 119, 144501] Published Tue Oct 03, 2017

08 Oct 19:52

Brillouin spectroscopy of optical microfibers and nanofibers

by Adrien Godet
Adrien Godet, Abdoulaye Ndao, Thibaut Sylvestre, Vincent Pecheur, Sylvie Lebrun, Gilles Pauliat, Jean-Charles Beugnot, Kien Phan Huy
Optical microfibers and nanofibers are currently being widely used in a vast number of applications ranging from quantum and ultra-cold atom optics to optical sensing. However, most existing methods for characterizing these tiny photonic wires are either destructive or rather complex to implement. ... [Optica 4, 1232-1238 (2017)]
04 Oct 08:20

Focus: Video—Fluid Video Contest Winners

by David Ehrenstein

Author(s): David Ehrenstein

Swimming starfish larvae, dripping paint, and swirling gas jets are featured in the APS Division of Fluid Dynamics’ winning videos.


[Physics 10, 108] Published Fri Sep 29, 2017

04 Oct 08:18

Single-shot multispectral imaging with a monochromatic camera

by Sujit Kumar Sahoo
Sujit Kumar Sahoo, Dongliang Tang, Cuong Dang
Multispectral imaging plays an important role in many applications, from astronomical imaging and earth observation to biomedical imaging. However, current technologies are complex with multiple alignment-sensitive components and spatial and spectral parameters predetermined by manufacturers. Here, ... [Optica 4, 1209-1213 (2017)]
29 Sep 20:29

Large three-dimensional photonic crystals based on monocrystalline liquid crystal blue phases

by Chun-Wei Chen

Large three-dimensional photonic crystals based on monocrystalline liquid crystal blue phases

Nature Communications, Published online: 28 September 2017; doi:10.1038/s41467-017-00822-y

Conventional fabrication approaches for large-size three-dimensional photonic crystals are problematic. By properly controlling the self-assembly processes, the authors report the fabrication of monocrystalline blue phase liquid crystals that exhibit three-dimensional photonic-crystalline properties.

29 Sep 20:29

Il dilemma della blockchain

by Andrea Daniele Signorelli

C’ è un aspetto fondamentale che differenzia la blockchain – il registro digitale, distribuito, anonimo e crittografato che rende possibile l’esistenza dei bitcoin e non solo – dalle altre grandi innovazioni tecnologiche di questi anni (dall’intelligenza artificiale alla Internet of Things): la forte impronta ideologica che ne sta alla base e che si può riassumere nella volontà di rendere superflua ogni forma di entità centrale (governi, aziende, banche e qualunque istituzione si frapponga tra i liberi cittadini/proprietari). Una sorta di versione tecnologica dell’anarco-individualismo che va molto oltre il generale libertarianesimo che ammanta la Silicon Valley.

L’obiettivo ultimo della blockchain, e delle applicazioni che su essa si reggono (le note criptomonete, ma anche agli smart contracts o le organizzazioni decentralizzate), è infatti quello di liberare l’uomo da qualunque forma di fiducia siamo oggi costretti ad accordare agli intermediari che regolano buona parte delle nostre vite di cittadini. Grazie alla blockchain, almeno nella teoria, resterebbero solo liberi individui che scambiano beni e prendono accordi tra di loro, approfittando degli automatismi garantiti da questa tecnologia. In questa utopia libertaria non ci sono banche, non ci sono notai, non ci sono finanziarie; un domani, volendo esagerare, forse nemmeno governi: ogni ente centrale viene sostituito da un codice matematico che non richiede nessuna fiducia e che non può essere manomesso.

A questo punto, una breve digressione sul meccanismo che regola questa tecnologia è d’obbligo. La blockchain può essere definita come un registro aperto e distribuito: una “catena di blocchi” a cui chiunque può partecipare – diventando così un nodo – semplicemente installando sul proprio computer il registro che contiene la storia delle varie transazioni (per esempio dei bitcoin) e iniziando così a monitorare automaticamente i vari passaggi che avvengono attraverso la catena. Restando al caso dei bitcoin, il lavoro svolto dai nodi viene incentivato per via economica: quando viene dato il via libera a un passaggio di denaro, risolvendo per via informatica una complessa equazione, questi ottengono in cambio delle criptomonete (al momento, 12 bitcoin per ogni transazione).

Ogni volta che un gruppo di transazioni è approvato, viene collegato al blocco precedente attraverso un hash, un’impronta unica e immutabile che fornisce la garanzia che nessuno potrà manomettere i dati registrati. A meno di riuscire a conquistare il 51% del potere di calcolo dell’intera blockchain, è impossibile per il singolo apportare modifiche al registro; perché verrebbe meno il consenso necessario tra i nodi. Questo è un elemento fondamentale: la decentralizzazione della blockchain è ciò che la rende sicura e distribuita; oltre a consentire l’eliminazione di ogni ente centrale facendo invece affidamento sulla “democrazia del potere di calcolo” assicurata dalle migliaia di partecipanti alla blockchain dei bitcoin.

L’obiettivo ultimo della blockchain è liberare l’uomo da qualunque forma di fiducia siamo oggi costretti ad accordare agli intermediari che regolano buona parte delle nostre vite di cittadini.

Ma c’è un problema: il numero dei nodi che partecipano alla catena dei bitcoin sta calando. In particolare, sta scendendo rapidamente il numero dei “full nodes”; ovvero di chi mantiene una copia dell’intera blockchain sul proprio computer. Com’è possibile, considerando che il successo crescente delle criptomonete dovrebbe portare sempre più persone a diventare parte di un meccanismo che offre importanti incentivi economici? È qui che le cose si fanno un po’ tecniche. È qui, soprattutto, che si capisce come l’idea anarco-capitalista di un sistema interamente decentralizzato stia fallendo di fronte al suo stesso successo.

I problemi sono diversi. Prima di tutto: più il tempo passa, più il peso della blockchain aumenta; se due anni fa era sufficiente scaricare sul proprio computer 40 giga di dati, oggi questa cifra si sta approssimando a 130 GB, rendendo sempre più complesso diventare un “full node” della catena per chi possiede un normale computer casalingo. Non è tutto: il numero di transazioni in bitcoin continua a crescere, mettendo a dura prova un sistema che, al momento, può processare solo 3/7 transazioni al secondo (per fare un paragone, un circuito finanziario come VISA può convalidare 60.000 transazioni ogni secondo). Dal momento che ogni blocco della catena (all’interno del quale vengono racchiusi i dati cifrati delle transazioni) non può avere una dimensione superiore a 1 MB, l’attesa per vedere convalidati i pagamenti, che teoricamente dovrebbe essere di pochi minuti, spesso diventa di ore se non giorni (facendo inoltre salire le commissioni).

Con questi tempi, i bitcoin rischiano di diventare inutili: a chi serve una moneta virtuale che fa aspettare giorni prima di sapere se il pagamento è andato a buon fine? Le soluzioni tecniche esistono, ma il prezzo da pagare è molto alto. Sul finire di luglio, i programmatori che, di fatto, gestiscono la blockchain dei bitcoin hanno introdotto un nuovo protocollo (SegWit), che riduce il peso dei blocchi spacchettando i dati relativi alla firma digitale e liberando così un po’ di spazio. Più importante ancora, nei prossimi mesi la dimensione dei blocchi dovrebbe salire a 2 MB, aumentando il numero di transazioni processabili ogni secondo.

Nonostante le ultime modifiche siano state apportate dopo l’accordo che ha posto fine a una vera e propria guerra civile all’interno della comunità Bitcoin, non tutti sono rimasti soddisfatti. Una parte dei programmatori ha quindi dato vita a un hard fork (una biforcazione irreversibile della blockchain) per creare una nuova catena i cui blocchi – se il processo avrà successo – avranno una dimensione massima di 8 MB, scalando di diverse misure la rapidità con cui si possono convalidare le transazioni. La moneta creata con questa biforcazione è la neonata Bitcoin Cash.

Ma perché fermarsi a 8? È sufficiente modificare una riga di codice per proporre (ma poi bisogna vedere quanti nodi seguono la proposta) una blockchain i cui blocchi abbiano dimensioni di 10/20/30 MB; quanti se ne vuole. Ogni volta che si aumentano le dimensioni dei blocchi, però, ai miners viene richiesto maggiore potere computazionale, e di conseguenza strumenti più costosi e maggiore energia da consumare per far girare le macchine. Il risultato è facilmente intuibile: sempre meno attori saranno in grado di agire come nodi, riducendo progressivamente la distribuzione che è proprio il valore alla base della blockchain.

Nonostante le ultime modifiche siano state apportate dopo l’accordo che ha posto fine a una vera e propria guerra civile all’interno della comunità Bitcoin, non tutti sono rimasti soddisfatti.

Non è un problema del futuro. Anzi, è esattamente la ragione per cui, ormai un anno e mezzo fa, lo storico sviluppatore Mike Hearn aveva dichiarato la morte dell’esperimento Bitcoin. Già oggi, infatti, la parte del leone la svolgono i cosiddetti mining pool: gruppi di minatori professionisti che uniscono le forze per avere la potenza di calcolo sufficiente a risolvere un blocco prima che lo faccia qualcun altro. I primi otto mining pool più potenti al mondo si trovano in Cina; ma basterebbe un accordo tra le prime quattro di queste società per superare o avvicinarsi drasticamente alla fatidica quota del 51% della potenza del network, che, in linea teorica, permette di prendere il controllo della blockchain.

È questo il dilemma che attanaglia sostenitori e fautori della blockchain: scalabilità ed efficacia portano inevitabilmente a una drastica riduzione della decentralizzazione; un sistema veramente decentralizzato, invece, rischia di restare un prodotto di nicchia per pochi appassionati, non in grado di incidere sulla società (da notare che su GitHub, invece che di dilemma, si parla di trilemma; perché l’aumento della dimensione dei blocchi espone l’intero sistema anche a maggiori rischi). Quale dev’essere, allora, lo scopo dei bitcoin: diventare una moneta in grado di fare concorrenza a quelle tradizionali, aumentando però la concentrazione, o restare principalmente un asset speculativo (o un bene rifugio) che non ha vero uso nel mondo, ma che mantiene in vigore (almeno in parte) la distribuzione che è alla base del progetto?

Al momento, come forse inevitabile, sembra essere la prima opzione a farsi largo. E non è detto che si possa parlare di tradimento dello spirito originario, dal momento che lo stesso titolo del white paper con cui Satoshi Nakamoto (chiunque esso sia o essi siano) lanciò l’idea dei bitcoin parlava di un “peer to peer electronic cash system”: il che fa pensare che la sua priorità fosse quella di creare un sistema per i pagamenti davvero funzionante, in grado di competere con i canali tradizionali.

La ragione per cui si sta favorendo la scalabilità in luogo della decentralizzazione, però, è anche un’altra: nei primi sei mesi del 2017 i venture capitalists hanno investito oltre 300 milioni di euro nelle startup che lavorano con i bitcoin o in generale con i molteplici utilizzi della blockchain; nel settore, inoltre, hanno fatto il loro ingresso colossi del calibro di R3, un consorzio che ha riunito le 40 banche più grandi del mondo (tra cui le italiane Unicredit e Intesa Sanpaolo) per studiare le potenzialità della catena di blocchi.

Per attori di questo calibro, la distribuzione non è necessariamente una virtù: quello che conta è che sia uno strumento efficace. “Se il Bitcoin continuasse ad avere successo, la rete è destinata a crescere a dismisura”, si legge su un sito italiano specializzato. “Se le transazioni raggiungessero la frequenza di utilizzo di Paypal o Visa, la blockchain crescerebbe esponenzialmente, rimanendo prerogativa di pochi o pochissimi full nodes. (…) Se il Bitcoin dovesse addirittura rimpiazzare l’utilizzo del contante, necessiteremmo di enormi datacenter per memorizzare la blockchain”. E quindi, addio decentralizzazione.

Da sogno anarco-libertario, la blockchain si trasformerebbe in un metodo efficace, crittografato e solo parzialmente sicuro in cui l’aspetto ideologico viene meno.

Fin qui abbiamo parlato principalmente di bitcoin, ma lo stesso discorso varrà sempre più anche per Ethereum e i suoi smart contracts e per ogni applicazione che, per funzionare davvero bene, deve quanto meno limitare la propria decentralizzazione. Ma a questo punto, cosa diventerebbe la blockchain? Da sogno anarco-libertario, si trasformerebbe in un metodo efficace, crittografato e solo parzialmente sicuro (pochi data center sono più facilmente aggredibili rispetto a migliaia di computer sparsi nel mondo); in cui l’aspetto ideologico viene meno e in cui gli intermediari di cui ci si doveva sbarazzare riemergono con in mano le chiavi della catena (gli istituti bancari, in effetti, sono stati i primi a investigare le potenzialità di questa tecnologia).

Al di là di qualche possibile soluzione (Bitcoin Cash dovrebbe utilizzare lo sharding – una sorta di frammentazione dei compiti – per aumentare le capacità conservando la distribuzione), la verità è che la strada sembra essere segnata. Lo dimostra il fatto che si parla sempre più spesso di creare blockchain private: “Invece di avere un network pubblico e non controllato, è possibile creare un sistema in cui i permessi per accedere sono strettamente controllati e in cui solo alcuni utenti hanno il diritto di leggere o modificare la catena, pur mantenendo alcune delle caratteristiche, in termini di autenticità e decentralizzazione, che la blockchain fornisce”, scrive Vitalik Buterin, fondatore di Ethereum, sul suo blog. “Questi sistemi sono di fondamentale interesse per le istituzioni finanziarie e hanno provocato una reazione da parte di chi vede in questi sviluppi qualcosa che fa venire meno la ragione stessa della decentralizzazione, oppure l’atto disperato di alcuni dinosauri che provano a mantenere la loro posizione”.

Buterin, che sul tema sembra essere molto pragmatico, si spinge anche a evidenziare alcuni fondamentali vantaggi tecnici delle blockchain private; di cui almeno due sono da evidenziare: “Solo dei soggetti noti avranno il permesso di convalidare le transazioni, quindi ogni rischio di un attacco del 51% portato da eventuali collusioni di miner cinesi verrebbe meno. Inoltre, le transazioni diventerebbero più economiche, perché sarebbero verificate solo da pochi nodi dall’elevatissimo potere di calcolo”. In poche parole, eliminando dal trilemma la distribuzione, si ottiene la scalabilità senza nemmeno rinunciare del tutto alla sicurezza.

Tutto bene, quindi? In verità, alcuni aspetti inquietanti iniziano a farsi largo quando si pensa a blockchain private completamente nelle mani di grandi aziende. Ciò che doveva essere un’utopia della liberazione rischia di trasformarsi in una dittatura del codice, governata da aziende ed enti centrali in grado di sfruttare gli automatismi garantiti dalla blockchain per trasformare in realtà i loro sogni più reconditi. Per capirci qualcosa di più, basta pensare agli smart contracts: contratti basati sulla catena di blocchi che si eseguono automaticamente nel momento in cui le condizioni vengono soddisfatte. Teoricamente, nascono per eliminare il bisogno di terze parti come i notai o anche solo le agenzie di scommesse; nel momento in cui questa tecnologia si fonde con la internet of things, però, le prospettive vanno molto oltre.

Alcuni aspetti inquietanti iniziano a farsi largo quando si pensa a blockchain private completamente nelle mani di grandi aziende: ciò che doveva essere un’utopia della liberazione rischia di trasformarsi in una dittatura del codice.

“Immaginiamo che tutti i lucchetti di un appartamento siano connessi a internet”, ha spiegato Chris Ellis di Feathercoin a Fast Company. “Quando fai una transazione in bitcoin per affittare la casa, lo smart contract che tu e io abbiamo sottoscritto ti permette di aprire automaticamente l’appartamento, usando le chiavi che hai sul tuo smartphone”. Uno dei primi teorici degli smart contracts, Nick Szabo, aveva portato un esempio simile: anche il mutuo dell’auto si potrebbe stipulare attraverso gli smart contracts; se salti un pagamento, la blockchain può automaticamente cancellare le chiavi digitali che permettono di far funzionare la macchina. Qualcosa del genere esiste già nella realtà: Slock.it è una startup tedesca che progetta serrature collegate alla internet of things e agli smart contracts, studiate per rendere completamente automatico l’affitto di appartamenti su AirBnb o dare la possibilità di noleggiare la propria auto a terzi e guadagnare  senza dover fare nulla (lo smart contract, in base alle vostre indicazioni, può valutare se il rating di chi vuole noleggiare l’auto è sufficiente).

Le prospettive, però, potrebbero anche prendere una brutta piega: “Lo stesso sistema potrebbe venire programmato per impedire l’apertura del lucchetto dopo il pagamento dell’ultimo mese di affitto”, si legge sull’Atlantic. “O magari potrebbe togliere l’energia o la connessione a internet se il sensore all’interno dell’appartamento determinasse che gli occupanti stanno facendo troppo chiasso”. E ovviamente si può anche andare oltre: oggi le famiglie morose possono tutelare i loro interessi ed evitare di subire uno sfratto rivolgendosi alle istituzioni preposte; ma come fare se lo smart contract al quale hanno aderito permette al proprietario di negare l’accesso alla casa, l’utilizzo dell’energia, dell’acqua e di tutto ciò che può essere gestito attraverso la internet of things?

“Se tutto questo vi suona familiare”, prosegue Ian Bogost sull’Atlantic, “è perché la cultura contemporanea si è già trovata ad affrontare situazioni simili. Le tecnologie di controllo e sorveglianza, al confronto modeste, usate da Google, Facebook e gli altri – il cui impatto ormai conosciamo bene – hanno proliferato basandosi sull’assunto che avrebbero reso le vite delle persone migliori e più efficienti (…) Ugualmente, il futuro della blockchain sembra essere legato alla visione a breve termine di investitori e imprenditori a cui piace parlare di un’ipotetica utopia distribuita, senza prendere le misure contro la tirannia che potrebbe ugualmente realizzare”.

Invece di liberarci dalla fiducia obbligata che dobbiamo accordare a enti centrali, la blockchain potrebbe rafforzare ulteriormente governi, istituti finanziari, aziende e quant’altro, automatizzando meccanismi e tagliando fuori attori a cui oggi il cittadino può rivolgersi per chiedere di essere difeso da eventuali soprusi o per far valere i suoi diritti; fornendo in questo modo un livello di controllo centrale, e automatizzato, che non ci si sarebbe certo attesi da un semplice “registro distribuito”. Ancora una volta, utopia e distopia dimostrano di essere due facce della stessa medaglia, perfettamente in grado di convivere. Le esperienze del passato – dall’open web che si trasforma in walled garden, ai social network che diventano strumenti di raccolta dati a strascico – ci dovrebbero però mettere in guardia dal fatto che, il più delle volte, la bilancia non tende a pendere dal lato della libertà.

L'articolo Il dilemma della blockchain proviene da il Tascabile.

29 Sep 12:48

Giant light-harvesting nanoantenna for single-molecule detection in ambient light

by Kateryna Trofymchuk

Giant light-harvesting nanoantenna for single-molecule detection in ambient light

Nature Photonics, Published online: 29 September 2017; doi:10.1038/s41566-017-0001-7

Donor dye nanoparticles have been used to realize structures that are 25 times brighter than quantum dots. This enabled single-molecule imaging using ambient light.

28 Sep 21:15

Noninvasive Cathodoluminescence-Activated Nanoimaging of Dynamic Processes in Liquids

by Connor G. Bischak, Rebecca B. Wai, Charles Cherqui, Jacob A. Busche, Steven C. Quillin, Craig L. Hetherington, Zhe Wang, Clarice D. Aiello, Darrell G. Schlom, Shaul Aloni, D. Frank Ogletree, David J. Masiello and Naomi S. Ginsberg

TOC Graphic

ACS Nano
DOI: 10.1021/acsnano.7b06081
27 Sep 20:42

Quantum interference between autonomous single-photon sources from Doppler-broadened atomic ensembles

by Taek Jeong
Taek Jeong, Yoon-Seok Lee, Jiho Park, Heonoh Kim, Han Seb Moon
To realize a quantum network based on quantum entanglement swapping, bright and completely autonomous sources are essentially required. Here, we experimentally demonstrate Hong–Ou–Mandel (HOM) interference between two independent bright photon-pair sources generated via the ... [Optica 4, 1167-1170 (2017)]
27 Sep 07:36

Multipolar second-harmonic generation by Mie-resonant dielectric nanoparticles. (arXiv:1709.08848v3 [physics.optics] UPDATED)

by Daria Smirnova, Alexander I. Smirnov, Yuri S. Kivshar

By combining analytical and numerical approaches, we study resonantly enhanced second-harmonic generation (SHG) by individual high-index dielectric nanoparticles made of centrosymmetric materials. Considering both bulk and surface nonlinearities, we describe second-harmonic nonlinear scattering from a silicon nanoparticle optically excited in the vicinity of the magnetic and electric dipolar resonances. We discuss the contributions of different nonlinear sources, and the effect of the low-order optical Mie modes on the characteristics of the generated far-field. We demonstrate that the multipolar expansion of the radiated field is dominated by dipolar and quadrupolar modes (two axially symmetric electric quadrupoles, an electric dipole, and a magnetic quadrupole), and the interference of these modes can ensure directivity of the nonlinear scattering. The developed multipolar analysis can be instructive for interpreting the far-field measurements of the nonlinear scattering, and it provides prospective insights into a design of CMOS-compatible nonlinear nanoantennas fully integrated with silicon-based photonic circuits, as well as new methods of nonlinear diagnostics.

23 Sep 20:52

Deterministic Enhancement of Coherent Photon Generation from a Nitrogen-Vacancy Center in Ultrapure Diamond

by Daniel Riedel, Immo Söllner, Brendan J. Shields, Sebastian Starosielec, Patrick Appel, Elke Neu, Patrick Maletinsky, and Richard J. Warburton

Author(s): Daniel Riedel, Immo Söllner, Brendan J. Shields, Sebastian Starosielec, Patrick Appel, Elke Neu, Patrick Maletinsky, and Richard J. Warburton

Nitrogen-vacancy centers—a type of atom-sized defect in diamonds—have potential for use as quantum bits in quantum information technologies. However, low rates of entanglement between the defect spin and the photons they produce hamper the mediation of long-distance connections. A new experiment shows a way around this limitation by employing a tunable, miniaturized Fabry-Pérot microcavity.


[Phys. Rev. X 7, 031040] Published Thu Sep 07, 2017

22 Sep 20:07

Fluorescence spectroscopy enhancement on photonic nanoantennas. (arXiv:1709.06749v1 [physics.chem-ph])

by Jerome Wenger

This document briefly introduces the key concepts to understand the phenomenon of fluorescence enhancement with optical nanostructures. The equations remain simple, with the major goal to illustrate the different physical effects at play. It also provides an overview of different recent approaches to enhance single molecule fluorescence with plasmonic and non-plasmonic nanoantennas, and describes three main biochemical applications.

21 Sep 07:01

Spatial correlations of the spontaneous decay rate as a probe of dense and correlated disordered materials

by Leseur, Olivier; Pierrat, Romain; Carminati, Remi
Title: Spatial correlations of the spontaneous decay rate as a probe of dense and correlated disordered materials
Author(s): Leseur, Olivier; Pierrat, Romain; Carminati, Remi
Source: EUROPEAN PHYSICAL JOURNAL-SPECIAL TOPICS, 226 (7): 1423-1432 MAY 2017
Document Type: Article
20 Sep 19:13

Obsolete Technology

And I can't believe some places still use fax machines. The electrical signals waste so much time going AROUND the Earth when neutrino beams can go straight through!
20 Sep 13:08

Far-field single nanoparticle detection and sizing

by Nan Zhang
Nan Zhang, Zhiyuan Gu, Shuai Liu, Yujie Wang, Shuai Wang, Zonghui Duan, Wenzhao Sun, Yun-Feng Xiao, Shumin Xiao, Qinghai Song
Whispering gallery mode based optical microcavities are important for highly sensitive optical sensing. However, the current experimental realizations are strongly dependent on high-resolution tunable lasers and evanescent coupling, which are too cumbersome and too expensive for portable devices. ... [Optica 4, 1151-1156 (2017)]
20 Sep 08:22

Evidence for light-by-light scattering in heavy-ion collisions with the ATLAS detector at the LHC

Nature Physics 13, 852 (2017). doi:10.1038/nphys4208

Authors:

19 Sep 15:47

Silicon Mie Resonators for Highly Directional Light Emission from monolayer MoS2. (arXiv:1709.04999v1 [physics.optics])

by Ahmet Fatih Cihan, Alberto G. Curto, Søren Raza, Pieter G. Kik, Mark L. Brongersma

Controlling light emission from quantum emitters has important applications ranging from solid-state lighting and displays to nanoscale single-photon sources. Optical antennas have emerged as promising tools to achieve such control right at the location of the emitter, without the need for bulky, external optics. Semiconductor nanoantennas are particularly practical for this purpose because simple geometries, such as wires and spheres, support multiple, degenerate optical resonances. Here, we start by modifying Mie scattering theory developed for plane wave illumination to describe scattering of dipole emission. We then use this theory and experiments to demonstrate several pathways to achieve control over the directionality, polarization state, and spectral emission that rely on a coherent coupling of an emitting dipole to optical resonances of a Si nanowire. A forward-to-backward ratio of 20 was demonstrated for the electric dipole emission at 680 nm from a monolayer MoS2 by optically coupling it to a Si nanowire.

18 Sep 22:09

Spontaneous Formation of Vector Vortex Beams in Vertical-Cavity Surface-Emitting Lasers with Feedback

by Jesus Jimenez-Garcia, Pedro Rodriguez, T. Guillet, and T. Ackemann

Author(s): Jesus Jimenez-Garcia, Pedro Rodriguez, T. Guillet, and T. Ackemann

A simple laser setup has spontaneously produced nonuniform polarization patterns called vector vortices.


[Phys. Rev. Lett. 119, 113902] Published Fri Sep 15, 2017

12 Sep 21:14

Polarization-controlled asymmetric excitation of surface plasmons

by Quan Xu
Quan Xu, Xueqian Zhang, Quanlong Yang, Chunxiu Tian, Yuehong Xu, Jianbing Zhang, Hongwei Zhao, Yanfeng Li, Chunmei Ouyang, Zhen Tian, Jianqiang Gu, Xixiang Zhang, Jiaguang Han, Weili Zhang
Free-space light can be coupled into propagating surface waves at a metal–dielectric interface, known as surface plasmons (SPs). This process has traditionally faced challenges in preserving the incident polarization information and controlling the directionality of the excited SPs. The ... [Optica 4, 1044-1051 (2017)]
12 Sep 21:14

Self-optimization of plasmonic nanoantennas in strong femtosecond fields

by Liping Shi
Liping Shi, Bianca Iwan, Rana Nicolas, Quentin Ripault, Jose R. C. Andrade, Seunghwoi Han, Hyunwoong Kim, Willem Boutu, Dominik Franz, Torsten Heidenblut, Carsten Reinhardt, Bert Bastiaens, Tamas Nagy, Ihar Babushkin, Uwe Morgner, Seung-Woo Kim, Günter Steinmeyer, Hamed Merdji, Milutin Kovacev
Plasmonic dimer nanoantennas can significantly boost the electric field strength in the gap region, allowing for a modification of the feed gap geometry by femtosecond laser illumination. Using resonant bowtie antennas to enhance the electric field of a low-fluence femtosecond oscillator, here we ... [Optica 4, 1038-1043 (2017)]
12 Sep 21:13

Focusing light by wavefront shaping through disorder and nonlinearity

by Hadas Frostig
Hadas Frostig, Eran Small, Anat Daniel, Patric Oulevey, Stanislav Derevyanko, Yaron Silberberg
Wavefront shaping is a powerful technique that can be used to focus light through scattering media, which can be important for imaging through scattering samples such as tissue. This method is based on the assumption that the field at the output of the medium is a linear superposition of the modes ... [Optica 4, 1073-1079 (2017)]
12 Sep 21:13

Biomaterial microlasers implantable in the cornea, skin, and blood

by Matjaž Humar
Matjaž Humar, Anja Dobravec, Xiangwei Zhao, Seok Hyun Yun
Fluorescent stand-alone laser particles that are implantable into biological tissues have the potential to enable novel optical imaging, diagnosis, and therapy. Here we demonstrate several types of biocompatible microlasers and their lasing action within biological systems. Dye-doped polystyrene ... [Optica 4, 1080-1085 (2017)]
08 Sep 10:09

Band-edge engineering for controlled multi-modal nanolasing in plasmonic superlattices

by Danqing Wang

Nature Nanotechnology 12, 889 (2017). doi:10.1038/nnano.2017.126

Authors: Danqing Wang, Ankun Yang, Weijia Wang, Yi Hua, Richard D. Schaller, George C. Schatz & Teri W. Odom

01 Sep 15:06

Terahertz Nanoscopy of Plasmonic Resonances with a Quantum Cascade Laser

by Riccardo Degl’Innocenti, Robert Wallis, Binbin Wei, Long Xiao, Stephen J. Kindness, Oleg Mitrofanov, Philipp Braeuninger-Weimer, Stephan Hofmann, Harvey E. Beere and David A. Ritchie

TOC Graphic

ACS Photonics
DOI: 10.1021/acsphotonics.7b00687
31 Aug 11:44

Artificial intelligence: The future is superintelligent

by Stuart Russell

Artificial intelligence: The future is superintelligent

Nature 548, 7669 (2017). doi:10.1038/548520a

Author: Stuart Russell

Stuart Russell weighs up a book on the risks and rewards of the AI revolution.

28 Aug 20:52

How Laplace Would Hide a Goat: The New Science of Magic Windows

by Michael Trott

Last week, I read Michael Berry’s paper, “Laplacian Magic Windows.” Over the years, I have read many interesting papers by this longtime Mathematica user, but this one stood out for its maximizing of the product of simplicity and unexpectedness. Michael discusses what he calls the magic window. For 70+ years, we have known about holograms, and now we know about magic windows. So what exactly is a magic window? Here is a sketch of the optics of one:

Magic window optics sketch


Parallel light falls onto a glass sheet that is planar on the one side and has some gentle surface variation on the other side (bumps in the above image are vastly overemphasized; the bumps of a real magic window would be minuscule). The light gets refracted by the magic window (the deviation angles of the refracted light rays are also overemphasized in the graphic) and falls onto a wall. Although the window bumpiness shows no recognizable shape or pattern, the light density variations on the wall show a clearly recognizable image. Starting with the image that one wants to see on the wall, one can always construct a window that shows the image one has selected. The variations in the thickness of the glass are assumed to be quite small, and the imaging plane is assumed to be not too far away so that the refracted light does not form caustics—as one sees them, for instance, at the bottom of a swimming pool in sunny conditions.

Now, how should the window surface look to generate any pre-selected image on the wall? It turns out that the image visible on the wall is the Laplacian of the window surface. Magic windows sound like magic, but they are just calculus (differentiation, to be precise) in action. Isn’t this a neat application of multivariate calculus? Schematically, these are the mathematical steps involved in a magic window.

Implementation-wise, the core steps are the following:

Magic window implementation

And while magic windows are a 2017 invention, their roots go back hundreds of years to so-called magic mirrors. Magic mirrors are the mirror equivalent of magic windows: they too can act as optical Laplace operators (see the following).

Expressed more mathematically: Let the height of the bumpy side of the glass surface be f(x,y). Then the intensity of the light brightness on the wall is approximately Δx,y f(x,y), where Δ is the Laplacian ∂2./∂x2+∂2./∂y2. Michael calls such a window a “magic window.” It is magic because the glass surface height f(x,y) does not in any way resemble Δ x,y f(x,y).

It sounds miraculous that a window can operate as a Laplace operator. So let’s do some numerical experiments to convince ourselves that this does really work. Let’s start with a goat that we want to use as the image to be modeled. We just import a cute-looking Oberhasli dairy goat from the internet.

goat = ImageTake[RemoveAlphaChannel[ColorConvert[Import[           "https://s-media-cache-ak0.pinimg.com/originals/fa/60/ce/\      fa60ce323b5642a78abb1b1814fcd582.jpg"], "Grayscale"]], {1, -30}]
goat = ImageTake[RemoveAlphaChannel[ColorConvert[Import[           "https://s-media-cache-ak0.pinimg.com/originals/fa/60/ce/\      fa60ce323b5642a78abb1b1814fcd582.jpg"], "Grayscale"]], {1, -30}]

{w, h} = ImageDimensions[goat];

The gray values of the pixels can be viewed as a function h: ℝ*ℝ->[0,1]. Interpolation allows us to use this function constructively.

ifGoat = Interpolation[   Flatten[MapIndexed[{Reverse@#2, #1} &, ImageData[goat], {2}], 1]]

Here is a 3D plot of the goat function ifGoat.

Plot3D[ifGoat[x, y], {x, 1, w}, {y, 1, h}, ColorFunction -> GrayLevel,   MeshFunctions -> {}, PlotPoints -> 200,  BoxRatios -> {w, h, w/8}, ViewPoint -> {0, 2, 4},   ViewVertical -> {0, -1, 0}]

Plot3D[ifGoat[x, y], {x, 1, w}, {y, 1, h}, ColorFunction -> GrayLevel,   MeshFunctions -> {}, PlotPoints -> 200,  BoxRatios -> {w, h, w/8}, ViewPoint -> {0, 2, 4},   ViewVertical -> {0, -1, 0}]

And we can solve the Poisson equation with the image as the right-hand side: Δ f = image using NDSolveValue.

We will use Dirichlet boundary conditions for now. (But the boundary conditions will not matter for the main argument.)

ndsGoat = NDSolveValue[{Laplacian[U[x, y], {x, y}] == ifGoat[x, y],     DirichletCondition[U[x, y] == 1/2, True]}, {U}, {x, y} \[Element]      Rectangle[{1, 1}, {w, h}],    Method -> {"PDEDiscretization" -> {"FiniteElement", {"MeshOptions" \ -> {MaxCellMeasure -> 1}}}}][[1]]

The Poisson equation solution is quite a smooth function; the inverse of the Laplace operator is a smoothing operation. No visual trace of the goat seems to be left.

Plot3D[Evaluate[ndsGoat[x, y]], {x, 1, w}, {y, 1, h},               MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

Plot3D[Evaluate[ndsGoat[x, y]], {x, 1, w}, {y, 1, h},               MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

Overall it is smooth, and it is also still smooth when zoomed in.

Plot3D[Evaluate[ndsGoat[x, y]], {x, 100, 200}, {y, 100, 200},                MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

Plot3D[Evaluate[ndsGoat[x, y]], {x, 100, 200}, {y, 100, 200},                MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

Even when repeatedly zoomed in.

Plot3D[Evaluate[ndsGoat[x, y]], {x, 190, 200}, {y, 190, 200},                MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

Plot3D[Evaluate[ndsGoat[x, y]], {x, 190, 200}, {y, 190, 200},                MeshFunctions -> {#3 &}, PlotPoints -> 80,   AxesLabel -> {x, y}]

The overall shape of the Poisson equation solution can be easily understood through the Green’s function of the Laplace operator.

GreenFunction[{Laplacian[u[x, y],{x, y}],    DirichletCondition[u[x, y] == 0, True]}, u[x, y],                                 {x, y} \[Element]    Rectangle[{0, 0}, {Lx, Ly}], {m, n}]

We calculate and visualize the first few terms (individually) of the double sum from the Green’s function.

integral[{jx_, jy_}, {kx_, ky_}] =   Integrate[   Sin[Pi x kx/Lx] Sin[Pi y ky/Ly], {x, jx, jx + 1}, {y, jy, jy + 1}]

cfF = With[{lx = w, ly = h, id = ImageData[goat]},    Compile[{kx, ky},      Module[{sum = 0. },      Do[sum =         sum + (-1) id[[jy, jx]]  1/(          kx ky \[Pi]^2) (Cos[(jx kx \[Pi])/lx] -             Cos[((1 + jx) kx \[Pi])/lx]) (Cos[(jy ky \[Pi])/ly] -             Cos[((1 + jy) ky \[Pi])/ly]),       {jy, ly - 1}, {jx, lx - 1}];      sum]] ];

With[{lx = w, ly = h},  Table[Plot3D[    Evaluate[     cfF[kx, ky] 1/((\[Pi]^2 kx^2)/lx^2 + (\[Pi]^2 ky^2)/       ly^2) (Sin[(\[Pi] x kx)/lx] Sin[(\[Pi] y ky)/ly])], {x, 1,      lx}, {y, 1, ly},    Ticks -> {None, None, Automatic},     PlotLabel -> "{kx,ky}" == {kx, ky}, MeshFunctions -> {#3 &}],   {kx, 3}, {ky, 3}]]

With[{lx = w, ly = h},  Table[Plot3D[    Evaluate[     cfF[kx, ky] 1/((\[Pi]^2 kx^2)/lx^2 + (\[Pi]^2 ky^2)/       ly^2) (Sin[(\[Pi] x kx)/lx] Sin[(\[Pi] y ky)/ly])], {x, 1,      lx}, {y, 1, ly},    Ticks -> {None, None, Automatic},     PlotLabel -> "{kx,ky}" == {kx, ky}, MeshFunctions -> {#3 &}],   {kx, 3}, {ky, 3}]]

Taking 252 terms into account, we have the following approximations for the Poisson equation solution and its Laplacian. The overall shape is the same as the previous numerical solution of the Poisson equation.

goatPoissonApprox[x_, y_] = With[{lx = w, ly = h},    Monitor[     Sum[cfF[kx, ky] 1/((\[Pi]^2 kx^2)/lx^2 + (\[Pi]^2 ky^2)/        ly^2) (Sin[(\[Pi] x kx)/lx] Sin[(\[Pi] y ky)/ly]), {kx,        25}, {ky, 25}], {kx, ky}]];

With[{lx = w, ly = h},   Plot3D[Evaluate[goatPoissonApprox[x, y]], {x, 1, lx}, {y, 1, ly},    MeshFunctions -> {#3 &}]]

With[{lx = w, ly = h},   Plot3D[Evaluate[goatPoissonApprox[x, y]], {x, 1, lx}, {y, 1, ly},    MeshFunctions -> {#3 &}]]

For this small number of Fourier modes, the outline of goat is recognizable, but its details aren’t.

With[{cfL =     Compile[{x, y},      Evaluate[Laplacian[goatPoissonApprox[x, y], {x, y}]]]},  ReliefPlot[Table[cfL[x, y], {y, h, 1, -1}, {x, 1, w}],    ColorFunction -> GrayLevel, Frame -> False]]

Applying the Laplace operator to the PDE solutions recovers (by construction) a version of the goat. Due to finite element discretization and numerical differentiation, the resulting goat is not quite the original one.

ReliefPlot[  Table[Evaluate[Laplacian[ifGoat[x, y], {x, y}]], {y, h, 1, -1}, {x,     w}],                         ColorFunction -> GrayLevel, Frame -> False]

A faster and less discretization-dependent way to solve the Poisson equation uses the fast Fourier transform (FFT).

FDSTGoat =    FourierDST[    Table[(* \[CapitalDelta]^-1 *) -1./(4 - 2 Cos[x  Pi/h] -          2 Cos[y Pi/w]), {y, h}, {x, w}] FourierDST[ImageData[goat],       1], 1];

ListPlot3D[FDSTGoat, MeshFunctions -> {#3 &}]
ListPlot3D[FDSTGoat, MeshFunctions -> {#3 &}]

This solution recovers the goat more faithfully. Here is the recovered goat after interpolating the function values.

if\[CapitalDelta]Goat =   Interpolation[   Flatten[MapIndexed[{Reverse@#2, #1} &, FDSTGoat, {2}], 1],    InterpolationOrder -> 3]

ReliefPlot[  Table[Evaluate[Laplacian[if\[CapitalDelta]Goat[x, y], {x, y}]], {y,     h, 1, -1}, {x, w}],                         ColorFunction -> GrayLevel, Frame -> False]

Taking into account that any physical realization of a magic window made from glass will unavoidably have imperfections, a natural question to ask is: What happens if one adds small perturbations to the solution of the Poisson equation?

The next input modifies each grid point randomly by a perturbation of relative size 10-p. We see that for this goat, the relative precision of the surface has to be on the order of 10-6 or better—a challenging but realizable mechanical accuracy.

Table[if\[CapitalDelta]GoatRandomized = Interpolation[Flatten[     MapIndexed[{Reverse@#2, (1 + 10^-p RandomReal[{-1, 1}]) #1} &,       FDSTGoat, {2}], 1], InterpolationOrder -> 3];  ReliefPlot[   Table[Evaluate[     Laplacian[if\[CapitalDelta]GoatRandomized[x, y], {x, y}]], {y, h,      1, -1}, {x, w}],                          ColorFunction -> GrayLevel, Frame -> False,    PlotLabel -> HoldForm[10^-#] &[p]],  {p, 3, 6}]

To see how the goat emerges after differentiation (Δ = ∂2 ./∂x2+∂2 ./∂y2), here are the partial derivatives shown.

Function[\[Delta],    ReliefPlot[    Table[Evaluate[\[Delta] @ if\[CapitalDelta]Goat[x, y]], {y, h,       1, -1}, {x, w}],                             ColorFunction -> GrayLevel,     Frame -> False, PlotLabel -> \[Delta]]] /@                        {Function[f, D[f, x]], Function[f, D[f, y]],                         Function[f, D[f, {x, 2}]],    Function[f, D[f, {y, 2}]]}

And because we have ∂2 ./∂x2+∂2 ./∂y2 =(∂./∂x+ⅈ ∂./∂y)(∂./∂x–ⅈ ∂./∂y), we also look at the Wirtinger derivatives.

Function[\[Delta],    ReliefPlot[    Table[Evaluate[\[Delta] @ if\[CapitalDelta]Goat[x, y]], {y, h,       1, -1}, {x, w}],                             ColorFunction -> GrayLevel,     Frame -> False, PlotLabel -> \[Delta]]] /@                        {Function[f, Arg[D[f, x] + I D[f, y]]],    Function[f, Abs[D[f, x] + I D[f, y]]],                        Function[f, Arg[D[f, x] - I D[f, y]]],    Function[f, Abs[D[f, x] + I D[f, y]]]}

Function[\[Delta],    ReliefPlot[    Table[Evaluate[\[Delta] @ if\[CapitalDelta]Goat[x, y]], {y, h,       1, -1}, {x, w}],                             ColorFunction -> GrayLevel,     Frame -> False, PlotLabel -> \[Delta]]] /@                        {Function[f, Arg[D[f, x] + I D[f, y]]],    Function[f, Abs[D[f, x] + I D[f, y]]],                        Function[f, Arg[D[f, x] - I D[f, y]]],    Function[f, Abs[D[f, x] + I D[f, y]]]}

We could also just use a simple finite difference formula to get the goat back. This avoids any interpolation artifacts and absolutely faithfully reproduces the original goat.

{ImageConvolve[   Image[FDSTGoat], -{{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}},    Padding -> None],   LaplacianFilter[Image[FDSTGoat], 1],   LaplacianFilter[Image[FDSTGoat], 2]}

The differentiation can even be carried out as an image processing operation.

ImageConvolve[Image[FDSTGoat], -{{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}},    Padding -> None] // ImageAdjust

So far, nothing really interesting. We integrated and differentiated a function. Let’s switch gears and consider the refraction of a set of parallel light rays on a glass sheet.

We consider the lower parts of the glass sheet planar and the upper part slightly wavy with an explicit description height = f(x,y). The index of refraction is n, and we follow the light rays (coming from below) up to the imaging plane at height = Z. Here is a small Manipulate that visualizes this situation for the example surface f(x,y) = 1 + ε (cos(α x) + cos(β y).

We do want the upper surface of the glass nearly planar, so we use the factor ε in the previous equation.

g[x_, y_] := Cos[\[Alpha] x] + Cos[\[Beta] y]; f[x_, y_] := 1 +(* small height variations *) \[CurlyEpsilon]  g[x, y];  normalize = #/Sqrt[#.#] &; lightRay[{\[Alpha]_, \[Beta]_, \[CurlyEpsilon]_}, {x_, y_}, n_, Z_] =   Module[{dir0 = normalize[{0, 0, 1}], normal, \[Phi], \[Theta], P0,      direction2, dir, \[Sigma]},    (* surface normal *)    normal = normalize[Grad[z - f[x, y], {x, y, z}]];    (* refract the light ray using Snell's law *)    \[Phi] = ArcCos[normal.dir0];    \[Theta] = ArcSin[n Sin[\[Phi]]];    (* surface point of refraction *)    P0 = {x, y, f[x, y]};     (* refracted ray *)    direction2 = normalize[dir0 - normal.dir0 normal];     dir = Cos[\[Theta]] normal + Sin[\[Theta]] direction2 ;    (* ray up to height Z *)    \[Sigma] = (Z - P0[[3]])/dir[[3]];    (* return pair: {surface point, image plane point} *)    {P0, P0 + \[Sigma] dir}    ];

Manipulate[  Module[{surface,  p0, p1, rays, \[CapitalDelta] = 2 Pi/pp},   surface =     Plot3D[Evaluate[      1 + \[CurlyEpsilon] (Cos[\[Alpha] x] + Cos[\[Beta] y])], {x, -Pi,       Pi}, {y, -Pi, Pi},     Filling -> -2, FillingStyle -> Directive[White, Opacity[0.4]],      MeshFunctions -> {#3 &},     MeshStyle -> GrayLevel[0.5], Lighting -> "Neutral",      ImageSize -> 400,     BoundaryStyle -> Gray,      PlotStyle -> Directive[White, Opacity[0.4]]];     rays = Table[{p0, p1} =        N@lightRay[{\[Alpha], \[Beta], \[CurlyEpsilon]}, {\[Xi], \ \[Eta]}, n, Z];                           (* ignore rays with total reflection *)                          If[MatchQ[p1, {_Real, _Real, _Real}],                                  {Tube[         Line[{MapAt[-4 &, p0, 3], p0, p1}], 0.02],         Sphere[p1, 0.04]}, {}],          {\[Eta], -Pi + \[CapitalDelta]/2,        Pi - \[CapitalDelta]/         2, \[CapitalDelta]},   {\[Xi], -Pi + \[CapitalDelta]/2,        Pi - \[CapitalDelta]/2, \[CapitalDelta]}] // Quiet;   Show[{surface, Graphics3D[{Yellow, rays}]},            PlotRange -> All, BoxRatios -> Automatic,     Background -> Black]],   {{pp, 18, "rays"}, 1, 32, 1, Appearance -> "Labeled"}, Delimiter,  {{n, 3}, 1, 5, Appearance -> "Labeled"}, Delimiter,  {{Z, 5}, 1, 20, Appearance -> "Labeled"}, Delimiter,  {{\[CurlyEpsilon], 0.08}, -1, 1, Appearance -> "Labeled"}, Delimiter,  {{\[Alpha], 1}, 0, 5, Appearance -> "Labeled"},  {{\[Beta], 1}, 0, 5, Appearance -> "Labeled"},  TrackedSymbols :> True]

Manipulate[  Module[{surface,  p0, p1, rays, \[CapitalDelta] = 2 Pi/pp},   surface =     Plot3D[Evaluate[      1 + \[CurlyEpsilon] (Cos[\[Alpha] x] + Cos[\[Beta] y])], {x, -Pi,       Pi}, {y, -Pi, Pi},     Filling -> -2, FillingStyle -> Directive[White, Opacity[0.4]],      MeshFunctions -> {#3 &},     MeshStyle -> GrayLevel[0.5], Lighting -> "Neutral",      ImageSize -> 400,     BoundaryStyle -> Gray,      PlotStyle -> Directive[White, Opacity[0.4]]];     rays = Table[{p0, p1} =        N@lightRay[{\[Alpha], \[Beta], \[CurlyEpsilon]}, {\[Xi], \ \[Eta]}, n, Z];                           (* ignore rays with total reflection *)                          If[MatchQ[p1, {_Real, _Real, _Real}],                                  {Tube[         Line[{MapAt[-4 &, p0, 3], p0, p1}], 0.02],         Sphere[p1, 0.04]}, {}],          {\[Eta], -Pi + \[CapitalDelta]/2,        Pi - \[CapitalDelta]/         2, \[CapitalDelta]},   {\[Xi], -Pi + \[CapitalDelta]/2,        Pi - \[CapitalDelta]/2, \[CapitalDelta]}] // Quiet;   Show[{surface, Graphics3D[{Yellow, rays}]},            PlotRange -> All, BoxRatios -> Automatic,     Background -> Black]],   {{pp, 18, "rays"}, 1, 32, 1, Appearance -> "Labeled"}, Delimiter,  {{n, 3}, 1, 5, Appearance -> "Labeled"}, Delimiter,  {{Z, 5}, 1, 20, Appearance -> "Labeled"}, Delimiter,  {{\[CurlyEpsilon], 0.08}, -1, 1, Appearance -> "Labeled"}, Delimiter,  {{\[Alpha], 1}, 0, 5, Appearance -> "Labeled"},  {{\[Beta], 1}, 0, 5, Appearance -> "Labeled"},  TrackedSymbols :> True]

The reason we want the upper surface mostly planar is that we want to avoid rays that “cross” near the surface and form caustics. We want to be in a situation where the density of the rays is position dependent, but the rays do not yet cross. This restricts the values of n, Z and the height of the surface modulation.

Now let’s do the refraction experiment with the previous solution of the Laplace equation as the height of the upper glass surface. To make the surface variations small, we multiply that solution by 0.0001.

WolframAlpha["refractive index of glass", {{"Result", 1},    "ComputableData"},   PodStates -> {"Result__Show details", "Result__Hide details"}]

We use the median refractive index of glass, n = 1.53.

ifGoatSmall[x_, y_] = 0.0001  if\[CapitalDelta]Goat[x, y];

gradGoatSmall[x_, y_] = Grad[z - ifGoatSmall[x, y], {x, y, z}];

Instead of using lightRay, we will use a compiled version for faster numerical evaluation.

refractCompiled[{x_, y_}, n_, Z_] :=    cf[x, y, Z, n, gradGoatSmall[x, y], ifGoatSmall[x, y]];

cf = Compile[{x, y, Z, n, {g2, _Real, 1}, s2},    Module[{dir0 = Normalize[{0, 0, 1}], normal, \[Phi], \[Theta], P0,       direction2 = {1., 1, 1}, dir, \[Sigma]},     normal = Normalize[g2];     \[Phi] = ArcCos[normal.dir0];     \[Theta] = ArcSin[n Sin[\[Phi]]];     P0 = {x, y, s2};     direction2 = Normalize[dir0 - normal.dir0 normal];      dir = Cos[\[Theta]] normal + Sin[\[Theta]] direction2 ;     \[Sigma] = (Z - P0[[3]])/dir[[3]];     {P0, P0 + \[Sigma] dir}]];

In absolute units, say the variations in glass height are at most 1 mm; we look at the refracted rays a few meters behind the glass window. We will use about 3.2 million lights rays (42 per pixel).

With[{\[CapitalDelta] = 0.25, Z = 5000},   Monitor[   data = Line[      Flatten[Table[        refractCompiled[{x, y}, 1.53, Z], {y, 1,          h, \[CapitalDelta]}, {x, 1, w, \[CapitalDelta]}], 1]];,   {y, x}]]

points = Most[#] & /@ data[[1, All, 2]]; Length[points]

Displaying all endpoints of the rays gives a rather strong Moiré effect. But the goat is visible—a true refraction goat!

Graphics[{PointSize[0.001], Opacity[0.02],    Point[Developer`ToPackedArray[{1, -1} # & /@ points]]}]

Graphics[{PointSize[0.001], Opacity[0.02],    Point[Developer`ToPackedArray[{1, -1} # & /@ points]]}]

If we accumulate the number of points that arrive in a small neighborhood of the given points {X,Y} in the plane height=Z, the goat becomes much more visible. (This is what would happen if we would observe the brightness of the light that goes through the glass sheet and we assume that the intensities are additive.) To do the accumulation efficiently, we use the function Nearest.

nf = Nearest[points]; Monitor[tNF =     Table[Length@nf[{x, y}, {Infinity, 2}], {x, -20, w + 20}, {y, -20,       h + 20}];, {x, y}] ReliefPlot[Reverse@Transpose[tNF],   ColorFunction -> (GrayLevel[1 - #^2] &), Frame -> False]

nf = Nearest[points]; Monitor[tNF =     Table[Length@nf[{x, y}, {Infinity, 2}], {x, -20, w + 20}, {y, -20,       h + 20}];, {x, y}] ReliefPlot[Reverse@Transpose[tNF],   ColorFunction -> (GrayLevel[1 - #^2] &), Frame -> False]

Note that looking into the light that comes through the window would not show the goat because the light that would fall into the eye would mostly come from a small spatial region due to the mostly parallel light rays.

The appearance of the Laplacian of the surface of the glass sheet is not restricted to only parallel light. In the following, we use a point light source instead of parallel light. This means that the effect would also be visible by using artificial light sources, rather than sunlight with a magic window.

cfP = With[{w = w, h = h},   Compile[{x, y, Z, n, {g2, _Real, 1}, s2},    Module[{dir0 = Normalize[{x, y, s2} - {w/2, h/2, 5000}],       normal, \[Phi], \[Theta], P0, direction2 = {1., 1, 1},       dir, \[Sigma]},     normal = Normalize[g2];     \[Phi] = ArcCos[normal.dir0];     \[Theta] = ArcSin[n Sin[\[Phi]]];     P0 = {x, y, s2};     direction2 = Normalize[dir0 - normal.dir0 normal];      dir = Cos[\[Theta]] normal + Sin[\[Theta]] direction2 ;     \[Sigma] = (Z - P0[[3]])/dir[[3]];     {P0, P0 + \[Sigma] dir}]]]

refractCompiledP[{x_, y_}, n_, Z_] :=   cfP[x, y, Z, n, gradGoatSmall[x, y], ifGoatSmall[x, y]]

With[{Z = 5000, \[CapitalDelta] = .25},  Monitor[   dataP =      Line[Flatten[       Table[refractCompiledP[{x, y}, 1.5, Z], {x, 1,          w, \[CapitalDelta]}, {y, 1, h, \[CapitalDelta]}], 1]];,   {x, y}] ]

ptsP = Reverse[Most[#]] & /@ dataP[[1, All, 2]];  nfP = Nearest[ptsP]; With[{padding = 400},  Monitor[tNFP = Table[Length@nfP[{x, y}, {Infinity, 2}],                   {x, -padding, w + padding},   {y, -padding,        h + padding}];, {x, y}]]

ReliefPlot[Reverse@tNFP, ColorFunction -> (GrayLevel[1 - #^2] &),     Frame -> False] //                                                                      Rasterize[#, "Image", ImageSize -> 400] & // ImageCrop

ReliefPlot[Reverse@tNFP, ColorFunction -> (GrayLevel[1 - #^2] &),     Frame -> False] //                                                                      Rasterize[#, "Image", ImageSize -> 400] & // ImageCrop

So why is the goat visible in the density of rays after refraction? At first, it seems quite surprising whether either a parallel or point source shines on the window.

On second thought, one remembers Maxwell’s geometric meaning of the Laplace operator:

(\[CapitalDelta] f)(Subscript[Overscript[r, \[RightVector]], 0])=Underscript[lim, \[Rho]->0]((2d)/\[Rho]^2 (Subscript[\[LeftAngleBracket]f\[RightAngleBracket], S(Subscript[Overscript[r, \[RightVector]], 0],\[Rho])]-f(Subscript[Overscript[r, \[RightVector]], 0])))

… where Math notation indicates the average of f on a sphere centered at Math notation 2 with radius ρ. Here is a quick check of the last identity for two and three dimensions.

 Limit[2*2/\[Rho]^2 (Normal[       Series[Integrate[\[ScriptF][x, y], {x, y} \[Element]           Sphere[{x0, y0}, \[Rho]],          Assumptions -> \[Rho] > 0 \[And] (x0 | y0) \[Element]             Reals], {x, x0, 3}, {y, y0, 3}]]/      ArcLength[Sphere[{x0, y0}, \[Rho]]] - \[ScriptF][x0,       y0]), \[Rho] -> 0]

 Limit[2*3/\[Rho]^2 (Normal[       Series[Integrate[\[ScriptF][x, y, z], {x, y, z} \[Element]           Sphere[{x0, y0, z0}, \[Rho]],          Assumptions -> \[Rho] > 0 \[And] (x0 | y0 | z0) \[Element]             Reals], {x, x0, 3}, {y, y0, 3}, {z, z0, 3}]]/      Area[Sphere[{x0, y0, z0}, \[Rho]]] - \[ScriptF][x0, y0,       z0]), \[Rho] -> 0]

At a given point in the imaging plane, we add up the light rays from different points of the glass surface. This means we carry out some kind of averaging operation.

So let’s go back to the general refraction formula and have a closer look. Again we assume that the upper surface is mostly flat and that the parameter ε is small. The position {X,Y} of the light ray in the imaging plane can be calculated in closed form as a function of the surface g(x,y), the starting coordinates of the light ray {x,y}, the index of refraction n and the distance of the imaging plane Z.

Clear[f, g]; f[x_, y_] := f0 + \[CurlyEpsilon] g[x, y]; normalize = #/Sqrt[#.#] &; \[ScriptCapitalR] = Module[{dir0 = normalize[{0, 0, 1}]},    normal = normalize[Grad[z - f[x, y], {x, y, z}]];    \[Phi] = ArcCos[normal.dir0];    \[Theta] = ArcSin[n Sin[\[Phi]]];    P0 = {x, y, f[x, y]};     direction2 = normalize[dir0 - normal.dir0 normal];     dir = Cos[\[Theta]] normal + Sin[\[Theta]] direction2 ;    \[Sigma] = (Z - P0[[3]])/dir[[3]];    P0 + \[Sigma] dir ] // Simplify

That is a relatively complicated-looking formula. For a nearly planar upper glass surface (small ε), we have the following approximate coordinates for the {X,Y} coordinates of the imaging plane where we observe the light rays in terms of the coordinate {x,y} of the glass surface.

Series[Most[\[ScriptCapitalR]], {\[CurlyEpsilon], 0, 1}]

This means in zeroth order we have {X,Y} ≈ {x,y}. And the deviation of the light ray position in the imaging plane is proportional (n–1)Z. (Higher-order corrections to {X,Y} ≈ {x,y} we could get from Newton iterations, but we do not need them here.)

The density of rays is the inverse of the Jacobian for going from {x,y} to {X,Y}. (Think on the change of variable formulas for 1:1 transforms for multivariate integration.)

1/Det[Grad[Most[\[ScriptCapitalR]], {x, y}]] // Short[#, 6] &

LeafCount[1/Det[Grad[Most[\[ScriptCapitalR]], {x, y}]]]

Quantifying the size of the resulting expression shows that it is indeed a large expression. This is quite a complex formula. For a quadratic function in x and y, we can get some feeling for the density as a function of the physical parameters ε, n and Z as well as the parameters that describe the surface by varying them in an interactive demonstration. For large values of n, Z and ε, we see how caustics arise.

refractionDensity[{x_, y_}, {n_, Z_, \[CurlyEpsilon]_}, {c00_, c10_,      c01_, c11_, c20_, c02_}] =    1/Det[Grad[Most[\[ScriptCapitalR]], {x, y}]] /.      g -> Function[{x, y},        c00 + c10 x + c01 y + c11 x y + c20 x^2 + c02 y^2] /. f0 -> 1;

Manipulate[  {Plot3D[Evaluate[     c00 + c10 x + c01 y + c11 x y + c20 x^2 + c02 y^2], {x, -1,      1}, {y, -1, 1},    MeshFunctions -> {#3 &}],   Plot3D[Evaluate[     refractionDensity[{x, y}, {n, Z, \[CurlyEpsilon]}, {c00, c10, c01,        c11, c20, c02}]], {x, -1, 1}, {y, -1, 1},    MeshFunctions -> {#3 &}]},   {{n, 3}, 1, 5, Appearance -> "Labeled"},   {{Z, 5}, 1, 20, Appearance -> "Labeled"},   {{\[CurlyEpsilon], 0.08}, -1, 1, Appearance -> "Labeled"}, Delimiter,  {{c00, 0}, -2, 2, Appearance -> "Labeled"},  {{c10, 0}, -2, 2, Appearance -> "Labeled"},  {{c01, 0}, -2, 2, Appearance -> "Labeled"},  {{c11, 0.7}, -2, 2, Appearance -> "Labeled"},  {{c20, 1.2}, -2, 2, Appearance -> "Labeled"},  {{c02, 1}, -2, 2, Appearance -> "Labeled"},  ControlPlacement -> Top, TrackedSymbols :> True]

For nearly planar surfaces (first order in ε), the density is equal to the Laplacian of the surface heights (in x,y coordinates). This is the main “trick” in the construction of magic windows.

intensity =   Series[1/Det[      Grad[Most[\[ScriptCapitalR]], {x, y}]], {\[CurlyEpsilon], 0,      1}] // Simplify

This explains why the goat appears as the intensity pattern of the light rays after refraction. This means glass sheets act effectively as a Laplace operator.

Using Newton’s root-finding method, we could calculate the intensity in X,Y coordinates, but the expression explains heuristically why refraction on a nearly planar surface behaves like an optical Laplace operator. For more details, see this article.

Now we could model a better picture of the light ray density by pre-generating a matrix of points in the imaging plane using, say, 10 million rays, and record where they fall within the imaging plane. This time we model the solution of the Poisson equation using ListDeconvolve.

ifGoat2 = Interpolation[   Flatten[    MapIndexed[{Reverse@#2, #1} &,      ListDeconvolve[-{{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}},       ImageData[goat]], {2}], 1], InterpolationOrder -> 5]

The approximate solution of the Poisson equation is not quite as smooth as the global solutions, but the goat is nevertheless invisible.

Plot3D[Evaluate[ifGoat2[x, y]], {x, 1, w}, {y, 1, h},   MeshFunctions -> {#3 &}, PlotPoints -> 80]

ReliefPlot[  Table[Evaluate[Laplacian[ifGoat2[x, y], {x, y}]], {y, h, 1, -1}, {x,     w}], ColorFunction -> GrayLevel, Frame -> False]

ifGoatSmall2[x_, y_] = 0.002  ifGoat2[x, y];

gradGoatSmall2[x_, y_] = Grad[z - ifGoatSmall2[x, y], {x, y, z}];

refractCompiled2[{x_, y_}, n_, Z_] :=    cf[x, y, Z, n, gradGoatSmall2[x, y], ifGoatSmall2[x, y]];

(* this will take a few minutes *) With[{\[Mu] = 4, \[CapitalDelta] = 0.1, Z = 1000, \[Delta] = 25},  Monitor[   mat = Table[0, {\[Mu] (h + 2 \[Delta])}, {\[Mu] (w + 2 \[Delta])}];    Do[\[Upsilon] = \[Mu] Round[(refractCompiled2[{x, y}, 1.53, Z][[          2]] + \[Delta]), 1./\[Mu]];    If[1 <= \[Upsilon][[2]] <= \[Mu] (h + 2 \[Delta]) &&       1 <= \[Upsilon][[1]] <= \[Mu] (w + 2 \[Delta]),      mat[[\[Upsilon][[2]], \[Upsilon][[1]]]] =       mat[[\[Upsilon][[2]], \[Upsilon][[1]]]] + 1],     {x, 1, w, \[CapitalDelta]}, {y, 1, h, \[CapitalDelta]}];, {x, y}]]

We adjust the brightness/darkness through a power law (a crude approximation for a Weber–Fechner perception).

ImageResize[Blur[Image[1 - (mat/Max[mat])^0.3], 6], 600] // ImageCrop

If the imaging plane is too far away, we do get caustics (that remind me of the famous cave paintings from Lascaux).

With[{\[Mu] = 4, \[CapitalDelta] = 0.25, Z = 4000, \[Delta] = 25},  Monitor[   matC = Table[0, {\[Mu] (h + 2 \[Delta])}, {\[Mu] (w + 2 \[Delta])}];    Do[\[Upsilon] = \[Mu] Round[(refractCompiled2[{x, y}, 1.53, Z][[          2]] + \[Delta]), 1./\[Mu]];    If[1 <= \[Upsilon][[2]] <= \[Mu] (h + 2 \[Delta]) &&       1 <= \[Upsilon][[1]] <= \[Mu] (w + 2 \[Delta]),                matC[[\[Upsilon][[2]], \[Upsilon][[1]]]] =       matC[[\[Upsilon][[2]], \[Upsilon][[1]]]] + 1],     {x, 1, w, \[CapitalDelta]}, {y, 1, h, \[CapitalDelta]}];, {x, y}]]

ImageResize[Blur[Image[1 - (matC/Max[matC])^.2], 5], 600] // ImageCrop

If the image plane is even further away, the goat slowly becomes unrecognizable.

With[{\[Mu] = 4, \[CapitalDelta] = 0.25, Z = 8000, \[Delta] = 60},  Monitor[   matC2 =     Table[0, {\[Mu] (h + 2 \[Delta])}, {\[Mu] (w + 2 \[Delta])}];    Do[\[Upsilon] = \[Mu] Round[(refractCompiled2[{x, y}, 1.53, Z][[          2]] + \[Delta]), 1./\[Mu]];    If[1 <= \[Upsilon][[2]] <= \[Mu] (h + 2 \[Delta]) &&       1 <= \[Upsilon][[1]] <= \[Mu] (w + 2 \[Delta]),                 matC2[[\[Upsilon][[2]], \[Upsilon][[1]]]] =       matC2[[\[Upsilon][[2]], \[Upsilon][[1]]]] + 1],     {x, 1, w, \[CapitalDelta]}, {y, 1, h, \[CapitalDelta]}];, {x, y}]]

ImageResize[Blur[Image[1 - (matC2/Max[matC2])^.1], 5],    600] // ImageCrop

Although not practically realizable, we also show what the goat would look like for negative Z; now it seems much more sheep-like.

With[{\[Mu] = 4, \[CapitalDelta] = 0.25, Z = -3000, \[Delta] = 60},  Monitor[   matC3 =     Table[0, {\[Mu] (h + 2 \[Delta])}, {\[Mu] (w + 2 \[Delta])}];    Do[\[Upsilon] = \[Mu] Round[(refractCompiled2[{x, y}, 1.53, Z][[          2]] + \[Delta]), 1./\[Mu]];    If[1 <= \[Upsilon][[2]] <= \[Mu] (h + 2 \[Delta]) &&       1 <= \[Upsilon][[1]] <= \[Mu] (w + 2 \[Delta]),                 matC3[[\[Upsilon][[2]], \[Upsilon][[1]]]] =       matC3[[\[Upsilon][[2]], \[Upsilon][[1]]]] + 1],     {x, 1, w, \[CapitalDelta]}, {y, 1, h, \[CapitalDelta]}];, {x, y}]]

ImageResize[Blur[Image[1 - (matC3/Max[matC3])^.2], 5],    600] // ImageCrop

Here is a small animation showing the shape of the goat as a function of the distance Z of the imaging plane from the upper surface.

Even if the image is just made from a few lines (rather than each pixel having a non-white or non-black value), the solution of the Poisson equation is a smooth function, and the right-hand side is not recognizable in a plot of the solution.

imHomer =   ColorConvert[   Rasterize[    Show[Entity["PopularCurve", "HomerSimpsonCurve"]["Plot"],       Axes -> False] /.                                                                       \                 _RGBColor :> Black, "Image", ImageSize -> 300],    "Grayscale"]

{wHomer, hHomer} = ImageDimensions[imHomer];

ifHomer =    Interpolation[    Flatten[MapIndexed[{#2, #1} &, ImageData[imHomer], {2}], 1],     InterpolationOrder -> 4];

im\[CapitalDelta]Homer =    FourierDST[    Table[-1./(4 - 2 Cos[x  Pi/hHomer] - 2 Cos[y Pi/wHomer]), {y,        hHomer}, {x, wHomer}] *                                                  FourierDST[ImageData[imHomer], 1], 1];

if\[CapitalDelta]Homer =    Interpolation[    Flatten[MapIndexed[{Reverse@#2, #1} &,       im\[CapitalDelta]Homer, {2}], 1], InterpolationOrder -> 2];

Plot3D[Evaluate[if\[CapitalDelta]Homer[x, y]], {x, 1, wHomer}, {y, 1,    hHomer}, MeshFunctions -> {#3 &}, PlotPoints -> 80]

But after refraction on a glass sheet (or applying the Laplacian), we see Homer quite clearly.

 Image[ListConvolve[-{{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}},     im\[CapitalDelta]Homer]] // ImageAdjust

Despite the very localized curve-like structures that make the Homer image, the resulting Poisson equation solution again looks quite smooth. Here is the solution textured with its second derivative (the purple line will be used in the next input).

Plot3D[Evaluate[if\[CapitalDelta]Homer[x, y]], {x, 1, wHomer}, {y, 1,    hHomer}, PlotPoints -> 80,  BoxRatios -> {wHomer, hHomer, wHomer/2},   PlotStyle -> Texture[imHomer], Mesh -> {{200}},  MeshFunctions -> {#2 &}, MeshStyle -> Purple,   ViewPoint -> {0.3, -1.9, 2.9}]

The next graphic shows a cross-section of the Poisson equation solution together with its (scaled) first and second derivatives with respect to x along the purple line of the last graphic. The lines show up quite pronounced in the second derivatives.

Plot[Evaluate[{if\[CapitalDelta]Homer[x, 200]/10000,     D[if\[CapitalDelta]Homer[x, 200], x]/100,     D[if\[CapitalDelta]Homer[x, 200], x, x]}], {x, 1, wHomer},  PlotLegends -> {HoldForm[if\[CapitalDelta]Homer[x, 200]/10000],     HoldForm[D[if\[CapitalDelta]Homer[x, 200], x]],     HoldForm[D[if\[CapitalDelta]Homer[x, 200], {x, 2}]]}]

Let’s repeat a modification of the previous experiment to see how precise the surface would have to be to show Homer. We add some random waves to the Homer solution.

With[{M = 20, n = 8},   if\[CapitalDelta]Homer2[\[Delta]_][x_, y_] =     if\[CapitalDelta]Homer[x, y]*     (1 + \[Delta] Sum[         RandomReal[{}] Cos[           RandomReal[{-M, M}] x + 2 Pi RandomReal[]] Cos[           RandomReal[{-M, M}] y + 2 Pi RandomReal[]],         {n}])];

Again we see that the surface would have to be correct at the (10-6) level or better.

ArrayPlot[    Table[Evaluate[       Laplacian[if\[CapitalDelta]Homer2[10^-#][x, y], {x, y}]], {y, 1,       hHomer}, {x, 1, wHomer}], Frame -> False,    ColorFunction -> GrayLevel, PlotLabel -> HoldForm[10^-# ]] & /@ {5,    6, 7, 8}

Or one can design a nearly planar window that will project one’s most favorite physics equation on the wall when the Sun is shining.

physicsFormulas =    Select[(Last /@ Select[{#, FormulaData[#]} & /@ FormulaData[],         MemberQ[#,           "SpeedOfLight" | "GravitationalConstant" |            "BoltzmannConstant" | "ElectricConstant" |                            "MagneticConstant" | "PlanckConstant" |            "ReducedPlanckConstant" | "ElectronMass" |                             "StefanBoltzmannConstant" |            "ElementaryCharge" | "FaradayConstant" |            "RydbergConstant", {-1}] &]),                                FreeQ[#, _Real, \[Infinity]] &] /.     Quantity[1, s_String] :> HoldForm[Quantity[None, s]];

imPhysics =   ColorConvert[   ImageCollage[    Rasterize[#, "Image", ImageSize -> RandomInteger[{200, 400}]] & /@      TraditionalForm /@                                                                              \             RandomSample[physicsFormulas, 12], Background -> White,     ImageSize -> 800], "Grayscale"]

{wPhysics, hPhysics} = ImageDimensions[imPhysics];

ifPhysics =    Interpolation[    Flatten[MapIndexed[{#2, #1} &,       N[Floor[ImageData[imPhysics]]], {2}], 1],     InterpolationOrder -> 4];

im\[CapitalDelta]Physics =    FourierDST[    Table[-1./(4 - 2 Cos[x  Pi/hPhysics] - 2 Cos[y Pi/wPhysics]), {y,        hPhysics}, {x, wPhysics}]*                                                      FourierDST[ImageData[imPhysics], 1], 1];

if\[CapitalDelta]Physics =    Interpolation[    Flatten[MapIndexed[{Reverse@#2, #1} &,       im\[CapitalDelta]Physics, {2}], 1], InterpolationOrder -> 6];

When looking at the window, one will not notice any formulas. But this time, the solution of the Poisson equation has more overall structures.

Plot3D[Evaluate[if\[CapitalDelta]Physics[x, y]], {x, 1, wPhysics}, {y,    1, hPhysics}, MeshFunctions -> {#3 &}, PlotPoints -> 80]

But the refracted light will make physics equations. The resulting window is perfect for the entrance of, say, physics department buildings.

Image[ListConvolve[-{{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}},     im\[CapitalDelta]Physics]] // ImageAdjust

Now that we’re at the end of this post, let us mention that one can also implement the Laplacian through a mirror, rather than a window. See Michael Berry’s paper from 2006, “Oriental Magic Mirrors and the Laplacian Image” (see this article as well). Modifying the above function for refracting a light ray to reflecting a light ray and assuming a mostly flat mirror surface, we see the Laplacian of the mirror surface in the reflected light intensity.

Clear[f, g]; f[x_, y_] := f0 + \[CurlyEpsilon] g[x, y]; normalize = #/Sqrt[#.#] &; \[ScriptCapitalR]R =   Module[{dir0 = normalize[{0, 0, 1}], normal, \[Phi], P0, direction2,      dir, \[Sigma]},    normal = normalize[Grad[z - f[x, y], {x, y, z}]];    \[Phi] = ArcCos[normal.dir0];     P0 = {x, y, f[x, y]};     direction2 = normalize[dir0 - normal.dir0 normal];     dir = Cos[\[Phi]] normal - Sin[\[Phi]] direction2 ;    \[Sigma] = (Z - P0[[3]])/dir[[3]];    P0 + \[Sigma] dir ] // Simplify

Series[1/Det[     Grad[Most[\[ScriptCapitalR]R], {x, y}]], {\[CurlyEpsilon], 0,     1}] // Simplify

Making transparent materials and mirrors of arbitrary shape, now called free-form optics, is considered the next generation of modern optics and will have wide applications in science, technology, architecture and art (see here). I think that a few years from now, when the advertising industry recognizes their potential, we will see magic windows with their unexpected images behind them everywhere.


Download this post as a Computable Document Format (CDF) file. New to CDF? Get your copy for free with this one-time download.
11 Aug 09:04

Structural Protein-Based Whispering Gallery Mode Resonators

by Huzeyfe Yılmaz, Abdon Pena-Francesch, Robert Shreiner, Huihun Jung, Zaneta Belay, Melik C. Demirel, Şahin Kaya Özdemir and Lan Yang

TOC Graphic

ACS Photonics
DOI: 10.1021/acsphotonics.7b00310
09 Aug 09:51

Nanoscale Plasmonic V-Groove Waveguides for the Interrogation of Single Fluorescent Bacterial Cells

by Oren Lotan, Jonathan Bar-David, Cameron L.C. Smith, Sharon Yagur-Kroll, Shimshon Belkin, Anders Kristensen and Uriel Levy

TOC Graphic

Nano Letters
DOI: 10.1021/acs.nanolett.7b02132