All streams
Search
Write a publication
Pull to refresh
10
0
Send message

Да, общая интерференционная картина после пролёта многих электронов соответствует посчитанной по волновой функции вероятности

Вот именно. Не будь волновой функции, не было бы картины. Картина свидетельствует о волновой функции. Волновая функция физически реальна.

но при этом мы видим и куда прилетел каждый конкретный электрон

В момент контакта с мишенью. Да, начиная с этого момента уже невозможно выделить отдельную волновую функцию электрона (или даже электронно-позитронной пары) из общей волновой функции наблюдаемой Вселенной.

В двухщелевом эксперименте, если не пытаться определить конкретные пути, и получить интерференционную картину, электроны будут в суперпозиции (для времени с момента излучения и до попадания в мишень). Мы именно физически, независимо от знания, в нашей наблюдаемой Вселенной, имеем волновую функцию, не конкретную траекторию.

Наблюдаемый мир (по ММИ, как бы один из многих) всё же не классический, а почти классический.

Все наблюдения в квантовой механике возможны только через этот случайный механизм - без него как раз таки пси функция и описывающее её уравнение Шрёдингера нефизичны.

Это как посмотреть. Если рассматривать наблюдаемую Вселенную с полным набором "скрытых параметров", то получаем вполне физичное детерминированное уравнение Шрёдингера.

Да, физик-наблюдатель не знает этот самый полный набор, не знает полное уравнение. А частичное знание ему не сильно поможет, так как нет локальности. Но не практично не значит не физично.

Энергия выполняет роль делителя: она квантованая и не делится, но всё присоединённое поделит на себя.

Как это поделит на себя?

Откуда цитата? Лукьяненко?

Конкретно, интересует радиус наблюдаемой Вселенной через 10^100 лет, в одном и в другом случае.

При этом у гравитона есть координаты? :-)

А асфальтированные?

Тогда технику границ стен не получится совместить с текстурированием. Соответственно, речь не про Wolf 3D, а про Hovertank 3D. :-)

Где тогда будет космологический горизонт событий?

Нулевое значение ω_aили нет, как это повлияет на наше видение будущего наблюдаемой Вселенной?

Теория струн — не единственная идея, предполагающая эмерджентность пространства-времени.

В теории струн, насколько понимаю, пространство-время как раз задано как фон.

Конструируется оно в других теориях, например, в ПКГ.

Немного продвинул свой 2.5D-движок.

Не знаю контекста. Это для Dendy?

Думаю, как применить наработки 2.5D движка BoxEngine (тоже в своём роде самого-самого, см. также недавний комментарий) для текстурирования стен на Dendy, с учётом ограничений.
 

BoxEngine разрабатывался изначально так, чтобы выдать наилучшую картинку в 128x128 (2006-й год), так что сверхнизкое разрешение 32x30 само по себе не проблема.

Но вот палитра, 4 цвета на 4 тайла… Можно ли выбрать цвета так, чтобы не было вырвиглазно? Первый цвет это фон (серый), второй цвет это А, третий цвет это Б, четвёртый цвет это ближайший к (А+Б)/2.

 

Можно пока сделать одномерные текстуры. Это позволит не заморачиваться с вычислением текстурной координаты для каждого столбца, и памяти под текстуры тогда вволю (даже добавив в будущем поддержку двухмерных, есть смысл использовать и одномерные, где возможно).

 

Теперь, остаётся только научиться рисовать…

Текстурированный столбец

Код из BoxEngine (вариант на C, для редактора на компьютере):

__declspec (dllexport) int WINAPI DrawTexLineW(PIXEL *GenericPixels, int *WallTilesAddresses, int x0, int YStart, int tgl, int TileStart, int TileFinish, int adr, int xmin, int xmax, int TexPeriod, int TexFloater, int lig, int addi) {
	int xs,xc,t,b,addr,xcx,t2,x,k,t3,i,x2,tt1,tt2,xmx1,xmx2,xmn1,xmn2,LC;
	PIXEL c,c1,c2;	
	//addr=adr+(TileStart%TexPeriod);
	t=tgl>>(2+TexFloater);
	t2=(tgl>>(3+TexFloater))<<3;
	t3=t>>1; //t3a=t3+1;
	xs=YStart; x=(xs>>TexFloater)*ScreenWidth+x0;
	//tgl+=ScreenWidth<<TexFloater;
	LC=AO[0]<<24;
	switch (t) {
	case 1:
		for (k=TileStart;k<=TileFinish;k++) {
			if (x>xmax) break;
			//if (k%TexPeriod==0) addr=adr;
			addr=adr+WallTilesAddresses[k];
			LC=(AO[k]*lig+addi)&0xFF000000;
			xs+=tgl;
			xc=xs>>TexFloater;
			b=TexelPriorities8[xc-(x/ScreenWidth)];
			if ((b&3)==3) {
				GenericPixels[x+=ScreenWidth]=Textures0[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures1[addr]|LC;
			} else GenericPixels[x+=ScreenWidth]=Textures01[addr]|LC;
			if ((b&12)==12) {
				GenericPixels[x+=ScreenWidth]=Textures2[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures3[addr]|LC;
			} else GenericPixels[x+=ScreenWidth]=Textures23[addr]|LC;
			if ((b&48)==48) {
				GenericPixels[x+=ScreenWidth]=Textures4[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures5[addr]|LC;
			} else GenericPixels[x+=ScreenWidth]=Textures45[addr]|LC;
			if ((b&192)==192) {
				GenericPixels[x+=ScreenWidth]=Textures6[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures7[addr]|LC;
			} else GenericPixels[x+=ScreenWidth]=Textures67[addr]|LC;
			addr++;
		}
		break;
	case 2:
		for (k=TileStart;k<=TileFinish;k++) {
			if (x>xmax) break;
			//if (k%TexPeriod==0) addr=adr;
			addr=adr+WallTilesAddresses[k];
			LC=(AO[k]*lig+addi)&0xFF000000;
			xs+=tgl;
			xc=xs>>TexFloater;
			xcx=(xc-(x/ScreenWidth))&7;
			if (xcx==0&&xc-(x/ScreenWidth)>t2)
				b=TexelPriorities8[8];
			else
				b=TexelPriorities8[xcx];
			GenericPixels[x+=ScreenWidth]=Textures0[addr]|LC;
			if ((b&3)!=0) GenericPixels[x+=ScreenWidth]=Textures01[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures1[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures2[addr]|LC;
			if ((b&12)!=0) GenericPixels[x+=ScreenWidth]=Textures23[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures3[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures4[addr]|LC;
			if ((b&48)!=0) GenericPixels[x+=ScreenWidth]=Textures45[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures5[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures6[addr]|LC;
			if ((b&192)!=0) GenericPixels[x+=ScreenWidth]=Textures67[addr]|LC;
			GenericPixels[x+=ScreenWidth]=Textures7[addr]|LC;
			addr++;
		}
		break;
	case 3:
		for (k=TileStart;k<=TileFinish;k++) {
			if (x>xmax) break;
			//if (k%TexPeriod==0) addr=adr;
			addr=adr+WallTilesAddresses[k];
			LC=(AO[k]*lig+addi)&0xFF000000;
			xs+=tgl;
			xc=xs>>TexFloater;
			xcx=(xc-(x/ScreenWidth))&7;
			if (xcx==0&&xc-(x/ScreenWidth)>t2)
				b=TexelPriorities8[8];
			else
				b=TexelPriorities8[xcx];		
			if ((b&3)==3) {
				//GenericPixels[x+=ScreenWidth]=GenericPixels[x+=ScreenWidth]=Textures0[addr]|LC;
				//GenericPixels[x+=ScreenWidth]=GenericPixels[x+=ScreenWidth]=Textures1[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c=Textures0[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
				GenericPixels[x+=ScreenWidth]=c=Textures1[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
			} else {
				GenericPixels[x+=ScreenWidth]=Textures0[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures01[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures1[addr]|LC;
			}
			if ((b&12)==12) {
				GenericPixels[x+=ScreenWidth]=c=Textures2[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
				GenericPixels[x+=ScreenWidth]=c=Textures3[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
			} else {
				GenericPixels[x+=ScreenWidth]=Textures2[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures23[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures3[addr]|LC;
			}
			if ((b&48)==48) {
				GenericPixels[x+=ScreenWidth]=c=Textures4[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
				GenericPixels[x+=ScreenWidth]=c=Textures5[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
			} else {
				GenericPixels[x+=ScreenWidth]=Textures4[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures45[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures5[addr]|LC;
			}
			if ((b&192)==192) {
				GenericPixels[x+=ScreenWidth]=c=Textures6[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
				GenericPixels[x+=ScreenWidth]=c=Textures7[addr]|LC;
				GenericPixels[x+=ScreenWidth]=c;
			} else {
				GenericPixels[x+=ScreenWidth]=Textures6[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures67[addr]|LC;
				GenericPixels[x+=ScreenWidth]=Textures7[addr]|LC;
			}
			addr++;
		}
		break;
	default:
		int tt1s,tt2s;
		tt1=t3+(t&1); tt1s=tt1*ScreenWidth;
		tt2=t3+1; tt2s=tt2*ScreenWidth;
		xmx1=xmax-(tt1+tt1)*ScreenWidth;
		xmx2=xmax-(tt2+t3)*ScreenWidth;
		xmn1=xmin+(tt1+tt1)*ScreenWidth;
		xmn2=xmin+(tt2+t3)*ScreenWidth;

		xs=YStart+tgl/*-(1<<TexFloater)*/; x=(xs>>TexFloater)*ScreenWidth+x0;
		//xs=YStart+tgl-TexFloater; x=xs>>TexFloater;
		k=TileStart;
		if (YStart<=((xmin/ScreenWidth)<<TexFloater)) {
			LC=(AO[k]*lig+addi)&0xFF000000;
			addr=adr+WallTilesAddresses[k++];
			xs-=tgl;
			xc=xs>>TexFloater;
			xcx=((x/ScreenWidth)-xc)&7;
			if (xcx==0&&(x/ScreenWidth)-xc>t2)
				b=TexelPriorities8k[8];
			else
				b=TexelPriorities8k[xcx];
			//1
			c1=Textures7[addr]|LC;	c2=Textures6[addr]|LC;
			if ((b&1)!=0) {
				if (x<xmn2) {c=Textures67[addr]|LC; goto fin_l2;}
				x2=x-tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
				GenericPixels[x-=ScreenWidth]=Textures67[addr]|LC;
			} else {
				if (x<xmn1) goto fin_l1;
				x2=x-tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
			}
			x=x2;
			//2
			c1=Textures5[addr]|LC;	c2=Textures4[addr]|LC;
			if ((b&2)!=0) {
				if (x<xmn2) {c=Textures45[addr]|LC; goto fin_l2;}
				x2=x-tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
				GenericPixels[x-=ScreenWidth]=Textures45[addr]|LC;
			} else {
				if (x<xmn1) goto fin_l1;
				x2=x-tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
			}
			x=x2;
			//3
			c1=Textures3[addr]|LC;	c2=Textures2[addr]|LC;
			if ((b&4)!=0) {
				if (x<xmn2) {c=Textures23[addr]|LC; goto fin_l2;}
				x2=x-tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
				GenericPixels[x-=ScreenWidth]=Textures23[addr]|LC;
			} else {
				if (x<xmn1) goto fin_l1;
				x2=x-tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
			}
			x=x2;
			//4
			c1=Textures1[addr]|LC;	c2=Textures0[addr]|LC;
			if ((b&8)!=0) {
				if (x<xmn2) {c=Textures01[addr]|LC; goto fin_l2;}
				x2=x-tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
				GenericPixels[x-=ScreenWidth]=Textures01[addr]|LC;
			} else {
				if (x<xmn1) goto fin_l1;
				x2=x-tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x-=ScreenWidth]=c1; GenericPixels[x2-=ScreenWidth]=c2;}
			}
			x=x2;
			//.
			addr++;
		};
		goto fin_l;

fin_l2:	for (i=0;i<t3;i++) {
			if (x<xmin) goto fin_l;
			GenericPixels[x-=ScreenWidth]=c1;
		}
		GenericPixels[x-=ScreenWidth]=c;
		for (i=0;i<t3;i++) {
			if (x<xmin) goto fin_l;
			GenericPixels[x-=ScreenWidth]=c2;
		}
		goto fin_l;

fin_l1:	for (i=0;i<tt1;i++) {
			if (x<xmin) goto fin_l;
			GenericPixels[x-=ScreenWidth]=c1;
		}
		for (i=0;i<tt1;i++) {
			if (x<xmin) goto fin_l;
			GenericPixels[x-=ScreenWidth]=c2;
		}

fin_l:;

		xs=YStart+tgl*(k-TileStart)-(1<<TexFloater); x=(xs>>TexFloater)*ScreenWidth+x0;
		for (;k<TileFinish;k++) {
			addr=adr+WallTilesAddresses[k];
			LC=(AO[k]*lig+addi)&0xFF000000;
			xs+=tgl;
			xc=xs>>TexFloater;
			xcx=(xc-(x/ScreenWidth))&7;
			if (xcx==0&&xc-(x/ScreenWidth)>t2)
				b=TexelPriorities8k[8];
			else
				b=TexelPriorities8k[xcx];
			//1
			c1=Textures0[addr]|LC;	c2=Textures1[addr]|LC;
			if ((b&1)!=0) {
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures01[addr]|LC;
			} else {
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//2
			c1=Textures2[addr]|LC;	c2=Textures3[addr]|LC;
			if ((b&2)!=0) {
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures23[addr]|LC;
			} else {
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//3
			c1=Textures4[addr]|LC;	c2=Textures5[addr]|LC;
			if ((b&4)!=0) {
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures45[addr]|LC;
			} else {
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//4
			c1=Textures6[addr]|LC;	c2=Textures7[addr]|LC;
			if ((b&8)!=0) {
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures67[addr]|LC;
			} else {
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//.
			addr++;
		};

		if (k==TileFinish) {
			addr=adr+WallTilesAddresses[k];
			LC=(AO[k]*lig+addi)&0xFF000000;
			xs+=tgl;
			xc=xs>>TexFloater;
			xcx=(xc-(x/ScreenWidth))&7;
			if (xcx==0&&xc-(x/ScreenWidth)>t2)
				b=TexelPriorities8k[8];
			else
				b=TexelPriorities8k[xcx];
			//1			
			c1=Textures0[addr]|LC;	c2=Textures1[addr]|LC;
			if ((b&1)!=0) {
				if (x>xmx2) {c=Textures01[addr]|LC; goto fin_r2;}
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures01[addr]|LC;
			} else {
				if (x>xmx1) goto fin_r1;
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//2			
			c1=Textures2[addr]|LC;	c2=Textures3[addr]|LC;
			if ((b&2)!=0) {
				if (x>xmx2) {c=Textures23[addr]|LC; goto fin_r2;}
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures23[addr]|LC;
			} else {
				if (x>xmx1) goto fin_r1;
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//3
			c1=Textures4[addr]|LC;	c2=Textures5[addr]|LC;
			if ((b&4)!=0) {
				if (x>xmx2) {c=Textures45[addr]|LC; goto fin_r2;}
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures45[addr]|LC;
			} else {
				if (x>xmx1) goto fin_r1;
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//4
			c1=Textures6[addr]|LC;	c2=Textures7[addr]|LC;
			if ((b&8)!=0) {
				if (x>xmx2) {c=Textures67[addr]|LC; goto fin_r2;}
				x2=x+tt2s;
				for (i=0;i<t3;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
				GenericPixels[x+=ScreenWidth]=Textures67[addr]|LC;
			} else {
				if (x>xmx1) goto fin_r1;
				x2=x+tt1s;
				for (i=0;i<tt1;i++) {GenericPixels[x+=ScreenWidth]=c1; GenericPixels[x2+=ScreenWidth]=c2;}
			}
			x=x2;
			//.
			addr++;
		};

		goto fin_r;

fin_r2:	for (i=0;i<t3;i++) {
			if (x>xmax) goto fin_r;
			GenericPixels[x+=ScreenWidth]=c1;
		}
		GenericPixels[x+=ScreenWidth]=c;
		for (i=0;i<t3;i++) {
			if (x>xmax) goto fin_r;
			GenericPixels[x+=ScreenWidth]=c2;
		}
		goto fin_r;

fin_r1:	for (i=0;i<tt1;i++) {
			if (x>xmax) goto fin_r;
			GenericPixels[x+=ScreenWidth]=c1;
		}
		for (i=0;i<tt1;i++) {
			if (x>xmax) goto fin_r;
			GenericPixels[x+=ScreenWidth]=c2;
		}

fin_r:;

	}
	return 0;
}

Текстура разбита на группы, каждая из 8-ми подряд идущих текселей Texture0, Texture1, … Texture7. Также, в Texture01 предрасчитан цвет, средний от Texture0 и Texture1... Это позволяет создать эффект, которому трудно найти точный термин в компьютерной графике, но, например, шахматная доска на большом расстоянии может выглядеть однотонной, а не сверкать пиксельным калейдоскопом.

Сколько разных тайлов может быть в видеопамяти Dendy?

Указанный суперкомпьютер способен просчитать всё прошлое нашей Вселенной и полностью смоделировать её в настоящий момент. Но для того, чтобы вычислить ещё и будущее, его мощности будет недостаточно.

А ведь это совсем не то, о чём можно подумать.

Дело не в том, прошлое или будущее. В первом случае классические вычисления (с битами), во втором случае квантовые вычисления (с кубитами), в этом разница, так?

Есть свои + и -.

На клаве предсказуемее управление, можно действовать чуть ли не вслепую, ♥.

На мышке читерски) быстрый поворот.

Три вида миров взаимодействия миров:

  1. Математическая модель + вычисления. Даёт возможность двустороннего взаимодействия мира перестановок с родительским миром.

  2. Математическая модель. Мир перестановок существует для родительского мира, как бы включён в наблюдаемую Вселенную, но без взаимодействия.

  3. Без модели (того самого интерпретатора). Мир перестановок не существует для родительского мира. Но наблюдатель в мире перестановок всё так же может жить внутри своего мира.

(сложно подбирать термины для описания подобных идей)

Information

Rating
Does not participate
Registered
Activity