Были или нет американцы на Луне?
13,259,699 109,685
 

  CodeGrinder ( Слушатель )
07 сен 2009 07:18:27

Тред №143955

новая дискуссия Дискуссия  97

Кстати, к вопросу о положении "невидимого кратера" (выделен красным, наблюдатель стоит за восточной частью двойного кратера, высот нет, поверхность плоская):


Я думаю теперь очевидно, что те кратеры которые видны на фотографиях в этом месте просто не тянут по размеру.

А это стереопара (AS11-40-5930 и AS11-40-5941), где его в очередной раз не видно (кратер в центре не в счёт, так как искомый кратер по размеру примерно равен двойному кратеру, а поскольку он гораздо ближе к фотографу, то он будет гораздо крупнее двойного, кроме того он должен быть расположен немного левее двойного кратера):

Так что защитники в очередной раз продемонстрировали предвзятость, создав у многих людей иллюзию того что кратер "нашли", в то время как его там нет в принципе. Хорошо себя скомпроментировал и автор "найденного" кратера. Что у защитников действительно хорошо получается, так это издеваться, а когда дело доходит до элементарной честности, тут у них большие проблемы. Впрочем, я не уверен, что они считают это проблемой.

А это вид двойного кратера из LM (фокусное расстояние 81,2, это я всё про то что не влазит он в кадр):


Я думаю, приведённых моментов достаточно, чтобы с уверенностью сказать, что полёт А11 и высадка на Луну - это фальсификация. Ну, а дальше, "раз уж они начали, то с чего бы им останавливаться" (С)? Зачем реально что-то туда посылать, если можно просто "подснять". На чём считаю вопрос для себя закрытым. Думаю уже нарытое опровергнуть не удастся никак.

Это исходный текст подпрограммы отрисовки, тому кто знаком с программированием не составит труда адаптировать его под себя, кому надо пояснения - пишите:

#define SCALE_FACTOR 10000

HBITMAP gLrocBitmap = NULL;
int gX = 511*SCALE_FACTOR;
int gY = 508*SCALE_FACTOR;
int gObserverHeight = int(5.95*SCALE_FACTOR);
int gFocus = int(0.0612*SCALE_FACTOR);
int gAngle = 0;
int gAngleDown = 15;
int gK = 1;
int tsin[360];
int tcos[ARRAYSIZE(tsin)];

// инициализация
gLrocBitmap = (HBITMAP)LoadImage(hInstance, MAKEINTRESOURCE(IDB_BITMAP_LROC), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
for (int i = 0; i < ARRAYSIZE(tsin); i++)
{
double angle = i*3.14159265358979/180;
tsin[i] = int(sin(angle)*SCALE_FACTOR);
tcos[i] = int(cos(angle)*SCALE_FACTOR);
}

// отрисовка
void onPaint(HDC hdc, int cx, int cy)
{
DIBSECTION ds;
if (sizeof(ds) == GetObject(gLrocBitmap, sizeof(ds), &ds)
&& 24 == ds.dsBm.bmBitsPixel)
{
// using fixed point
int frameSize = int(0.053*SCALE_FACTOR);
int width = ds.dsBm.bmWidth;
int height = ds.dsBm.bmHeight;
int picsize = min(cx, cy);
int linesize = (picsize*3+3) & ~3;
BYTE *pPicture = (BYTE *)VirtualAlloc(NULL, linesize * picsize, MEM_COMMIT, PAGE_READWRITE);
if (NULL != pPicture)
{
BYTE *pBitmap = (BYTE *)ds.dsBm.bmBits;
int srcLineSize = ds.dsBm.bmWidthBytes;
for (int ys = -(picsize>>1); ys < (picsize>>1); ys++)
{
BYTE *pDstLine = pPicture + (ys + (picsize>>1)) * linesize;
int y = ys * frameSize / picsize;
double angle = atan((double)y / gFocus);
angle += gAngleDown*3.14159265358979/180;
if (angle > 3.14159265358979/180)
{
//int ty = (gFocus * gObserverHeight / y);
int ty = int(gObserverHeight/tan(angle)/gK);
if (ty < (512*500/455/gK) * SCALE_FACTOR)
{
ty = ty*gK*455/500;
for (int xs = 0; xs < picsize; xs++)
{
int x = (xs-(picsize>>1)) * frameSize / picsize;
int tx = x * ty / gFocus;
// rotate tx and ty
int _sin = tsin[gAngle];
int _cos = tcos[gAngle];
int rx = int(((__int64)gX*SCALE_FACTOR+(__int64)tx*_cos-(__int64)ty*_sin)/(SCALE_FACTOR*SCALE_FACTOR));
int ry = int(((__int64)gY*SCALE_FACTOR-(__int64)tx*_sin-(__int64)ty*_cos)/(SCALE_FACTOR*SCALE_FACTOR));
BYTE *pSrc = pBitmap+(height-1-ry)*srcLineSize+rx*3;
BYTE *pDst = pDstLine+xs*3;
*pDst++ = *pSrc++;
*pDst++ = *pSrc++;
*pDst = *pSrc;
}
}
}
}
int mode = SetStretchBltMode(hdc, COLORONCOLOR);
BITMAPINFOHEADER bmih =
{
sizeof(bmih), picsize, -picsize, 1, 24, BI_RGB, 0, 0, 0, 0, 0
};
int w = (cx-picsize)>>1;
RECT rc = { 0, 0, w, cy };
rc.bottom -= w;
StretchDIBits(hdc, w, 0, picsize, picsize,
0, 0, picsize, picsize, pPicture,
(BITMAPINFO *)&bmih, DIB_RGB_COLORS, SRCCOPY);
StretchDIBits(hdc, 0, cy-w, w, w,
gX/SCALE_FACTOR-w/4/2, height-gY/SCALE_FACTOR-w/4/2, w/4, w/4, ds.dsBm.bmBits,
(BITMAPINFO *)&ds.dsBmih, DIB_RGB_COLORS, SRCCOPY);
SetStretchBltMode(hdc, mode);
VirtualFree(pPicture, 0, MEM_RELEASE);
HBRUSH brush = CreateSolidBrush(0xffffff);
FillRect(hdc, &rc, brush);
SetRect(&rc, (cx+picsize)>>1, 0, cx, cy);
FillRect(hdc, &rc, brush);
DeleteObject(brush);

brush = CreateSolidBrush(0x0000ff);
SetRect(&rc, w/2, cy-w/2, w/2+3, cy-w/2+3);
FillRect(hdc, &rc, brush);
DeleteObject(brush);

TCHAR txt[256];
wsprintf(txt, TEXT("H: %d.%.2d m"), gObserverHeight/SCALE_FACTOR, (gObserverHeight%SCALE_FACTOR)*100/SCALE_FACTOR);
TextOut(hdc, 0, 0, txt, lstrlen(txt));
wsprintf(txt, TEXT("F: %d.%d mm"), gFocus/10, gFocus%10);
TextOut(hdc, 0, 20, txt, lstrlen(txt));
wsprintf(txt, TEXT("angle: %d"), gAngleDown);
TextOut(hdc, 0, 40, txt, lstrlen(txt));
wsprintf(txt, TEXT("K: %d"), gK);
TextOut(hdc, 0, 60, txt, lstrlen(txt));
}
}
}

// реакция на клавиши:

case VK_LEFT:
gAngle += 3;
if (gAngle >= ARRAYSIZE(tsin))
{
gAngle -= ARRAYSIZE(tsin);
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_RIGHT:
gAngle -= 3;
if (gAngle < 0)
{
gAngle += ARRAYSIZE(tsin);
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_UP:
gX -= tsin[gAngle];
gY -= tcos[gAngle];
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_DOWN:
gX += tsin[gAngle];
gY += tcos[gAngle];
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_ADD:
gObserverHeight += SCALE_FACTOR/20;
if (gObserverHeight > 30*SCALE_FACTOR)
{
gObserverHeight = 30*SCALE_FACTOR;
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_SUBTRACT:
gObserverHeight -= SCALE_FACTOR/20;
if (gObserverHeight < SCALE_FACTOR)
{
gObserverHeight = SCALE_FACTOR;
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_TAB:
if (int(0.0612*SCALE_FACTOR) == gFocus)
{
gFocus = int(0.0812*SCALE_FACTOR);
}
else
{
gFocus = int(0.0612*SCALE_FACTOR);
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_PRIOR:
gAngleDown -= 1;
if (gAngleDown < 0)
{
gAngleDown = 0;
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_NEXT:
gAngleDown += 1;
if (gAngleDown > 45)
{
gAngleDown = 45;
}
InvalidateRect(hWnd, NULL, FALSE);
break;
case VK_HOME:
if (gK > 1)
{
gK--;
InvalidateRect(hWnd, NULL, FALSE);
}
break;
case VK_END:
if (gK < 20)
{
gK++;
InvalidateRect(hWnd, NULL, FALSE);
}
break;
Отредактировано: CodeGrinder - 20 авг 2014 12:57:24
  • +0.00 / 0
  • АУ
ОТВЕТЫ (0)
 
Комментарии не найдены!